如何利用RegSetValueEX 函数将一个键值写为字符串
我写进去为乱码
RegSetValueEx hkey, "测试", 0, REG_SZ, "ceshi", 10
结果:
测试     REG_SZ       煜
不知如何解决

解决方案 »

  1.   

    RegSetValueEx hkey, "测试", 0, REG_SZ, ByVal "ceshi", 10
      

  2.   


    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private 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         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate Const HKEY_LOCAL_MACHINE = &H80000002
    Private Const REG_SZ = 1Private Sub Command1_Click()
        Dim hKey As Long
        RegCreateKey HKEY_LOCAL_MACHINE, "HARDWARE", hKey
        If hKey > 0 Then
           RegSetValueEx hKey, "", 0, REG_SZ, ByVal "中国人民是不可战胜的", 25
           RegCloseKey hKey
        End If
    End Sub
      

  3.   

    给API函数传字符串参数要用ByVal
      

  4.   

    只有少数专为VB写的(OLE自动化)API函数可以使用VB的字符串而不是C语言的字符串,可以引用传递ByRef,一般的都只能用ByVal,VB会自动完成转换工作的
      

  5.   

    寫入時將寫入的中文字串用strconv來格式化一下即可。
    另外取長度時,用lenb來取。