首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

哪位高手能帮小弟我看看那里写错了

2012-03-05 
谁能帮我看看那里写错了Private Const REG_OPTION_NON_VOLATILE 0 Key is preserved when system is re

谁能帮我看看那里写错了
Private Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Private Const KEY_ALL_ACCESS = &H3F
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Private Type SECURITY_ATTRIBUTES
  nLength As Long
  lpSecurityDescriptor As Long
  bInheritHandle As Long
End Type
Private Sub CreateNewKey(sNewKeyName As String, lPredefinedKey As Long)
  Dim hNewKey As Long 'handle to the new key
  Dim lRetVal As Long 'result of the RegCreateKeyEx function
  lRetVal = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal)
  RegCloseKey (hNewKey)
  End Sub
Private Sub Form_Click()
CreateNewKey "TestKey", HKEY_LOCAL_MACHINE
End Sub

谁能帮我看看那里写错了,根据MSDN里面测试的。
HOWTO: Use the Registry API to Save and Retrieve Setting 

Q145679

错误提示---编译错误:ByRef参数类型不符
好像提示0&那里错了

[解决办法]
第7个参数是SECURITY_ATTRIBUTES类型的,而你给的是long类型的,当然参数类型不符了
[解决办法]
有两处错误:
一、API的声明不对
二、不能直接在HKEY_LOCAL_MACHINE下创建key
Private Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Private Const KEY_ALL_ACCESS = &H3F
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Private Sub CreateNewKey(sNewKeyName As String, lPredefinedKey As Long)
Dim hNewKey As Long 'handle to the new key
Dim lRetVal As Long 'result of the RegCreateKeyEx function
lRetVal = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal)
RegCloseKey (hNewKey)
End Sub
Private Sub Command1_Click()
CreateNewKey "software\TestKey", HKEY_LOCAL_MACHINE
end sub

热点排行