本人想用API函数实现串口操作,其中使用到createfile函数,编译时提示ByRef参数类型不符,声明createfile函数如下,是从API浏览器里复制过来的,
Private 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
使用时如下:
Com1_h = CreateFile("com1", (GENERIC_READ Or GENERIC_WRITE), 0, 0, OPEN_EXISTING, O, 0)
总是提示第四个参数不对
请高手指点,谢谢,急盼!
Private 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
使用时如下:
Com1_h = CreateFile("com1", (GENERIC_READ Or GENERIC_WRITE), 0, 0, OPEN_EXISTING, O, 0)
总是提示第四个参数不对
请高手指点,谢谢,急盼!
Dim hFile as long
hFile = CreateTheFile(sYourFileName, False, True)
If hFile = INVALID_HANDLE_VALUE Or hFile = 0& Then Exit Function
...
CloseHandle hFile
Public Function CreateUniFile(ByVal Filename As String, bOpen As Boolean, bUseUnicode As Boolean) As Long ' Function uses APIs to read/create files with unicode support Const GENERIC_READ As Long = &H80000000
Const OPEN_EXISTING = &H3
Const FILE_SHARE_READ = &H1
Const GENERIC_WRITE As Long = &H40000000
Const FILE_SHARE_WRITE As Long = &H2
Const CREATE_ALWAYS As Long = 2
Const FILE_ATTRIBUTE_ARCHIVE As Long = &H20
Const FILE_ATTRIBUTE_HIDDEN As Long = &H2
Const FILE_ATTRIBUTE_READONLY As Long = &H1
Const FILE_ATTRIBUTE_SYSTEM As Long = &H4
Dim Flags As Long, Access As Long
Dim Disposition As Long, Share As Long
If bOpen Then
Access = GENERIC_READ
Share = FILE_SHARE_READ
Disposition = OPEN_EXISTING
Flags = FILE_ATTRIBUTE_ARCHIVE Or FILE_ATTRIBUTE_HIDDEN Or FILE_ATTRIBUTE_NORMAL _
Or FILE_ATTRIBUTE_READONLY Or FILE_ATTRIBUTE_SYSTEM
Else
Access = GENERIC_READ Or GENERIC_WRITE
Share = 0&
If bUseUnicode Then
Flags = GetFileAttributesW(StrPtr(Filename))
Else
Flags = GetFileAttributes(Filename)
End If
If Flags < 0& Then Flags = FILE_ATTRIBUTE_NORMAL
' CREATE_ALWAYS will delete previous file if necessary
Disposition = CREATE_ALWAYS
End If
If bUseUnicode Then
CreateUniFile = CreateFileW(StrPtr(Filename), Access, Share, ByVal 0&, Disposition, Flags, 0&)
Else
CreateUniFile = CreateFile(Filename, Access, Share, ByVal 0&, Disposition, Flags, 0&)
End IfEnd Function