注册 登录
编程论坛 VB6论坛

用RegQueryValueEx取带有中文的键值,长度都有了,怎么取不出数据啊?

bjyfcx 发布于 2022-11-20 17:25, 958 次点击
程序代码:
Private Sub Command3_Click()
Dim hKey As Long
Dim ret As Long
Dim lenData As Long
Dim typeData As Long
ret = RegOpenKey(HKEY_CURRENT_USER, "Software\VB and VBA Program Settings\QQ接收者", hKey)
If ret = 0 Then MsgBox "找到!" Else MsgBox "没找到!": Exit Sub            '得到0 ,说明得到
'
先取数据区的长度
ret = RegQueryValueEx(hKey, "receivers", ByVal 0, typeData, ByVal vbNullString, lenData)
'准备数据区
Dim buff() As Byte
ReDim buff(lenData - 1)
'读取数据
ret = RegQueryValueEx(hKey, "receivers", ByVal 0, typeData, ByVal buff(0), lenData)
Dim val As String
'去掉末尾的空字符,VB不需要这个
ReDim Preserve buff(lenData - 2)
'转化为VB中的字符串
val = StrConv(buff, vbUnicode)
MsgBox val
RegCloseKey (hKey)
End Sub
2 回复
#2
mrexcel2022-11-20 17:44
程序代码:
Dim val As String
'去掉末尾的空字符,VB不需要这个
ReDim Preserve buff(lenData - 2)
'转化为VB中的字符串
val = StrConv(buff, vbUnicode)
MsgBox val

末尾的空字符莫删,最后TRIM去掉空格试试
#3
bjyfcx2022-11-20 18:00
回复 2楼 mrexcel
找到原因了,把 ByVal buff(0) 里面的ByVal 删掉就可以了,也不知道为什么,基础没打好
1