请问
Private Const HKEY_LOCAL_MACHINE = &H80000002
Dim zKey As Long
zKey = HKEY_LOCAL_MACHINE
RegOpenKeyEx zKey, lpszSubKey, 0, 1, phkResult 中的 &H80000002 的16进制数转换成 long 型变为负数了应该时超值,那api RegOpenKeyEx 定义中参数为long 型,我该怎么办???ByVal hKey As Long是long 型。Private Declare Function RegOpenKeyEx Lib "advapi32.dll"Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey AsString, ByVal ulOptions As Long, ByVal samDesired As Long,
phkresult As Long) As Long
Private Const HKEY_LOCAL_MACHINE = &H80000002
Dim zKey As Long
zKey = HKEY_LOCAL_MACHINE
RegOpenKeyEx zKey, lpszSubKey, 0, 1, phkResult 中的 &H80000002 的16进制数转换成 long 型变为负数了应该时超值,那api RegOpenKeyEx 定义中参数为long 型,我该怎么办???ByVal hKey As Long是long 型。Private Declare Function RegOpenKeyEx Lib "advapi32.dll"Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey AsString, ByVal ulOptions As Long, ByVal samDesired As Long,
phkresult As Long) As Long
了,就是定义了变量HKEY_LOCAL_MACHINE(只是名字看着象注册表的主键,方便写代码而已,他不还是变量吗,什么名字有什么关系呢),并且数值等于&H80000002,为什么你还要
Dim zKey As Long
zKey = HKEY_LOCAL_MACHINE
。。费解中。
直接
RegOpenKeyEx HKEY_LOCAL_MACHINE, lpszSubKey, 0, 1, phkResult
就可以了啊,,,为什么为什么为什么啊。。
API浏览器里面的常量定义,一般都是按名字意思来定义的变量名,就象你定义lpszSubKey一样,不是什么什么什么子键的意思吗。。当然了,你可以这样去定义,
Private Const zKey = &H80000002
又有什么关系呢,那就用
RegOpenKeyEx zKey , lpszSubKey, 0, 1, phkResult
。
看来楼主是对“常量定义”这个问题理解不是很清楚