CreateFile 中的第四个参数lpSecurityAttributes要设置为何值

gh111 2006-02-21 03:36:18

Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
中的第四个参数lpSecurityAttributes 要设置为何值,我调试时会出错
...全文
374 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
faysky2 2006-02-22
  • 打赏
  • 举报
回复
用ShellExecute 吧:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
ShellExecute 0, "open", "c:\test.doc", "", "", 1
End Sub
gh111 2006-02-22
  • 打赏
  • 举报
回复
shell如何使用
僵哥 2006-02-22
  • 打赏
  • 举报
回复
现在调试能通过,CreateFile运行了,但是为何还是打不开word 文档
-----------
打不开Word文档是什么意思?如果想使用Word去打开,建议使用shell
gh111 2006-02-21
  • 打赏
  • 举报
回复
现在调试能通过,CreateFile运行了,但是为何还是打不开word 文档
gh111 2006-02-21
  • 打赏
  • 举报
回复
错误提示变为:User-defined type may not be passed Byval
gh111 2006-02-21
  • 打赏
  • 举报
回复
各位大哥,为何还不行,错误提示和前面一样
faysky2 2006-02-21
  • 打赏
  • 举报
回复
自己看这改:
hNewFile = CreateFile(sTemp, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
faysky2 2006-02-21
  • 打赏
  • 举报
回复
用 ByVal 关键字指定为传值
僵哥 2006-02-21
  • 打赏
  • 举报
回复
Public Function FileExists(ByVal FileName As String) As Boolean
Dim FileHandle As Long
On Error GoTo ErrHandle
FileExists = False
FileHandle = CreateFile(FileName, _
0&, _
FILE_SHARE_READ Or _
FILE_SHARE_WRITE, _
ByVal 0&, _
OPEN_EXISTING, _
FILE_ATTRIBUTE_ARCHIVE Or _
FILE_ATTRIBUTE_HIDDEN Or _
FILE_ATTRIBUTE_NORMAL Or _
FILE_ATTRIBUTE_READONLY Or _
FILE_ATTRIBUTE_READONLY Or _
FILE_ATTRIBUTE_SYSTEM, _
0& _
)
If FileHandle = -1 Then Exit Function
FileExists = True
Call CloseHandle(FileHandle)
Exit Function
ErrHandle:
FileExists = False
End Function
僵哥 2006-02-21
  • 打赏
  • 举报
回复
Byval 0&

Public Function IsFileInUse(ByVal FileName As String) As Boolean
Dim FileHandle As Long
On Error GoTo ErrHandle

IsFileInUse = True

If Not FileExists(FileName) Then
IsFileInUse = True
Exit Function
End If

FileHandle = CreateFile(FileName, _
GENERIC_READ Or _
GENERIC_WRITE, _
0&, _
ByVal 0&, _
OPEN_EXISTING, _
FILE_ATTRIBUTE_ARCHIVE Or _
FILE_ATTRIBUTE_HIDDEN Or _
FILE_ATTRIBUTE_NORMAL Or _
FILE_ATTRIBUTE_READONLY Or _
FILE_ATTRIBUTE_READONLY Or _
FILE_ATTRIBUTE_SYSTEM, _
0& _
)

If FileHandle = -1 Then Exit Function

IsFileInUse = False

Call CloseHandle(FileHandle)

Exit Function
ErrHandle:
Err.Raise Err.Number, "IsFileInUse", Err.Description
End Function
gh111 2006-02-21
  • 打赏
  • 举报
回复
错误信息是:byref argument type mismatch

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧