关于API声明的有关问题
关于API声明的问题
今天,我学习API。写了一个Test程序,出了问题鸟。
代码入下:
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
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const CREATE_NEW = 1
Private Sub Command1_Click()
Dim a As Long
a = CreateFile( "c:\test.ini ", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, CREATE_NEW, 0, 0)
End Sub
编译不能通过,说是:
User-defined type not defined
好像是声明部分的问题。整个程序只有一个按钮。
------解决方案--------------------
lpSecurityAttributes As SECURITY_ATTRIBUTES
这是个Type,你需要定义这个type
------解决方案--------------------
SECURITY_ATTRIBUTES没有声明,添上:
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
或者将CreateFile的声明修改一下:
Private Declare Function CreateFile Lib "kernel32 " Alias "CreateFileA " (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
调用:
a = CreateFile( "c:\test.ini ", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, byval 0&, CREATE_NEW, 0, 0)
今天,我学习API。写了一个Test程序,出了问题鸟。
代码入下:
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
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const CREATE_NEW = 1
Private Sub Command1_Click()
Dim a As Long
a = CreateFile( "c:\test.ini ", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, CREATE_NEW, 0, 0)
End Sub
编译不能通过,说是:
User-defined type not defined
好像是声明部分的问题。整个程序只有一个按钮。
------解决方案--------------------
lpSecurityAttributes As SECURITY_ATTRIBUTES
这是个Type,你需要定义这个type
------解决方案--------------------
SECURITY_ATTRIBUTES没有声明,添上:
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
或者将CreateFile的声明修改一下:
Private Declare Function CreateFile Lib "kernel32 " Alias "CreateFileA " (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
调用:
a = CreateFile( "c:\test.ini ", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, byval 0&, CREATE_NEW, 0, 0)