VBA中如何操作注册表?

zxgatnudt 2003-10-08 10:48:41
我找了一本书,可是调用打开时返回值是6不是0,请问为什么有这个错误?
请问哪位可以成功修改注册表,要有可执行的源代码,谢谢!
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhjjhjhj 2003-10-12
  • 打赏
  • 举报
回复
这里正好有个实例
http://office.9zp.com/dispbbs.asp?boardID=18&ID=330
tanyaliji 2003-10-11
  • 打赏
  • 举报
回复
同意楼上的
ltc 2003-10-10
  • 打赏
  • 举报
回复
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_DYN_DATA = &H80000006
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CLASSES_ROOT = &H80000000

Public Const KEY_ALL_ACCESS = &HF003F
Public Const KEY_CREATE_LINK = &H20
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_READ = &H20019
Public Const KEY_SET_VALUE = &H2
Public Const KEY_WRITE = &H20006

Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Public Enum ValueType
REG_NONE = 0
REG_SZ = 1
REG_EXPAND_SZ = 2
REG_BINARY = 3
REG_DWORD = 4
REG_DWORD_BIG_ENDIAN = 5
REG_MULTI_SZ = 7
End Enum

Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
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
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public 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



Public Function SetRegValue(ByVal Name As String, ByVal Value As String) As Boolean

Dim lRet As Long, hKey As Long, Action As Long
Dim SA As SECURITY_ATTRIBUTES

With SA
.bInheritHandle = 1
.nLength = Len(SA)
End With

lRet = RegCreateKeyEx(HKEY_CURRENT_USER, g_regPath, _
0&, "", 0&, KEY_WRITE, SA, hKey, Action)

If lRet <> 0 Then
SetRegValue = False
Exit Function
End If

lRet = RegSetValueEx(hKey, Name, 0&, REG_SZ, ByVal Value, Len(Value))
If lRet <> 0 Then
RegCloseKey hKey
SetRegValue = False
Exit Function
End If

RegCloseKey hKey

SetRegValue = True

End Function

自己看吧
VB6编辑器 和 VBA编辑器 (Office 的VB编辑器)都不支持鼠标滚动。每次想看其它页的代码时,习惯性的滚动鼠标滚轮,居然没有半点反应——最好只好把鼠标移动到滚动条上去拖……这样操作对于习惯了使用鼠标滚轮的来说实在太痛苦了;虽然在某些系统下安装某些鼠标的驱动程序也可以滚动(比如我在Win2K在安装过罗技的鼠标驱动,可以滚动了),但是不是所有的系统下都可行。 实际上,MS 已经提供了补丁。 对补丁直接双击,将其解压到某个目录,比如 C:\Program Files\VB6MouseWheel(建议解压缩到VB的安装目录下,或者解压后拷贝到VB的安装目录下)。解压后会有如下一些文件: 代码源文件: EULA.txt Main.bas VB6IDEMouseWheelAddin.vbp 生成文件: VB6IDEMouseWheelAddin.dll 注册插件文件: VBA Mouse Wheel Fix.reg VB6MouseWheel 是以VB插件的方式运行的。刚才下载运行的那个安装程序并没有对其进行注册,所以现在还需要手工注册一下:   1. 打开“命令提示符”进入到 DOS 窗口,进入到 VB6MouseWheel 的安装目录,运行 regsvr32.exe VB6IDEMouseWheelAddin.dll 将这个dll 注册到系统。   2. 双击 VBA Mouse Wheel Fix.reg 文件,将其导入到注册表。   3. 打开 VB6 或者 VBA 编辑器,打开它的外接程序管理器,会看到列表里出现了“MouseWheel Fix”这一项。选择它并将其设置为“加载的”和“启动时加载”。   现在再试试,VB6/VBA 编辑器已经可能使用鼠标滚轮来滚动代码了! 嘿嘿,爽吧!

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧