热情软件屋

 

RegSetValueEx写的结果为什么不对


编号:QA003007
建立日期: 2000年6月1日 最后修改日期:2000年6月1日
所属类别:

吴昊:
    操作系统: Windows 98
    编程工具: VB6.0
    问题: 我在用 RegSetValueEx 函数时出现问题:
    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
    
    Dim lngValue As Long
    lngValue = 1
    RegSetValueEx HKEY_CURRENT_USER, "Test", 0, REG_DWORD, lngValue, 4
    然后运行程序,为什么得到的结果不是1而是0x6500c90f ?? 我试将 1 改为 "1" 但结果仍然不是1, 请问如何才能用此函数写任意的DWORD 值呢?

回答:

    注意你的声明中将lpData说明为As Any,这样这个参数是传值的,也就是说实际写的0x6500c90f不是lngValue的值,而是地址。要正确调用,必须:
    RegSetValueEx HKEY_CURRENT_USER, "Test", 0, REG_DWORD, ByVal lngValue, 4
    
    相关问题:
    QA002553 "如何用VB5对注册表二进制值键值进行读写"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio