关于 RegQueryValueEx 函数的用法?
我的声明是这样的:(分别对应查字符串和非字符串两种)
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function RegQueryValueEx2 Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
奇怪的是,如果是查询一个长整型的数据,我用一次这个函数就可以查到了:
ret= RegQueryValueEx2(phkResult, "DriverID", 0&, 0&, lRet, iSize)
值存放在lRet中
然而查询字符串值时,必须用两次才能查到所要的值,如:
sBuffer = String(1000, " ")
ret = RegQueryValueEx(phkResult, "dbq", 0&, 0&, sBuffer, lSize)
ret = RegQueryValueEx(phkResult, "dbq", 0&, 0&, sBuffer, lSize)
连写两次,才能将值查到,
这是我哪里写的不对还是它本身就是这样?