标题:用RegQueryValueEx取带有中文的键值,长度都有了,怎么取不出数据啊?
只看楼主
bjyfcx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-11-20
结帖率:100%
已结贴  问题点数:20 回复次数:2 
用RegQueryValueEx取带有中文的键值,长度都有了,怎么取不出数据啊?
程序代码:
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
搜索更多相关主题的帖子: Long ByVal 数据 ret Dim 
2022-11-20 17:25
mrexcel
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:125
专家分:480
注 册:2022-11-3
得分:20 
程序代码:
Dim val As String
'去掉末尾的空字符,VB不需要这个
ReDim Preserve buff(lenData - 2)
'转化为VB中的字符串
val = StrConv(buff, vbUnicode)
MsgBox val

末尾的空字符莫删,最后TRIM去掉空格试试
2022-11-20 17:44
bjyfcx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-11-20
得分:0 
回复 2楼 mrexcel
找到原因了,把 ByVal buff(0) 里面的ByVal 删掉就可以了,也不知道为什么,基础没打好
2022-11-20 18:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510709-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.143681 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved