词条 | RegQueryValue |
释义 | VB声明Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long 说明取得指定项或子项的默认(未命名)值 返回值 Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 参数表参数 类型及说明hKey Long,一个已打开项的句柄,或者指定一个标准项名 lpSubKey String,要获取一个值的子项。可设为vbNullString,表示获取hKey的值 lpValue String,用于容纳指定项值的一个字串 lpcbValue Long,指定一个变量,用于装载lpValue缓冲区的长度。一旦返回,它会设为实际载入缓冲区的字节数量 注解win32应用程序应该使用RegQueryValueEx。lpValue被定义成一个字串,以维持同win16的兼容性(在win16中,值全都是字串) 注册表操作声明Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegQueryValueEx 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 Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Private Const REG_SZ = 1& Private Const REG_EXPAND_SZ = 2& Private Const REG_BINARY = 3& Private Const REG_DWORD = 4& Private Const ERROR_SUCCESS = 0& '================================================== '================================ '注册表操作函数 '================================ '读取注册表字符串键值 Public Function GetString(hKey As Long, strPath As String, strValue As String) Dim keyhand As Long Dim lResult As Long Dim strBuf As String Dim lDataBufSize As Long Dim intZeroPos As Integer Dim lValueType As Long 'new add RegOpenKey hKey, strPath, keyhand lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize) If lValueType = REG_SZ Or lValueType = REG_EXPAND_SZ Then strBuf = String(lDataBufSize, " ") lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal strBuf, lDataBufSize) If lResult = ERROR_SUCCESS Then intZeroPos = InStr(strBuf, Chr$(0)) If intZeroPos > 0 Then GetString = left$(strBuf, intZeroPos - 1) Else: GetString = strBuf End If End If End If End Function '写入注册表字符串键值 Public Sub SetString(hKey As Long, strPath As String, strValue As String, strdata As String) Dim keyhand As Long RegCreateKey hKey, strPath, keyhand RegSetValueEx keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata) RegCloseKey keyhand End Sub '读取注册表 DWORD 键值 Function GetDword(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String) As Long Dim lResult As Long Dim lValueType As Long Dim lBuf As Long Dim lDataBufSize As Long Dim r As Long Dim keyhand As Long r = RegOpenKey(hKey, strPath, keyhand) ' Get length/data type lDataBufSize = 4 lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize) If lResult = ERROR_SUCCESS Then If lValueType = REG_DWORD Then GetDword = lBuf End If 'Else ' Call errlog("GetDWORD-" & strPath, False) End If r = RegCloseKey(keyhand) End Function '写入注册表 DWORD 键值 Function SetDword(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long) Dim keyhand As Long RegCreateKey hKey, strPath, keyhand RegSetValueEx keyhand, strValueName, 0&, REG_DWORD, lData, 4 RegCloseKey keyhand End Function '读取注册表二进制键值 Function GetBinary(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String) As Long Dim lResult As Long Dim lValueType As Long Dim lBuf As Long Dim lDataBufSize As Long Dim r As Long Dim keyhand As Long r = RegOpenKey(hKey, strPath, keyhand) ' Get length/data type lDataBufSize = 4 lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize) If lResult = ERROR_SUCCESS Then If lValueType = REG_BINARY Then GetBinary = lBuf End If End If r = RegCloseKey(keyhand) End Function '写入注册表二进制键值 Function SetBinary(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long, ByVal BitNumber As Long) Dim keyhand As Long RegCreateKey hKey, strPath, keyhand RegSetValueEx keyhand, strValueName, 0&, REG_BINARY, lData, BitNumber RegCloseKey keyhand End Function '删除一个注册表键值 Public Function DeleteValue(ByVal hKey As Long, ByVal strPath As String, ByVal strValue As String) Dim keyhand As Long RegOpenKey hKey, strPath, keyhand RegDeleteValue keyhand, strValue RegCloseKey keyhand End Function '创建一个主键 Public Function CreateKey(ByVal hKey As Long, ByVal strKey As String) Dim keyhand& RegCreateKey hKey, strKey, keyhand RegCloseKey keyhand& End Function |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。