vb使用Getsetting、Savesetting和Delsetting等内部函数操作注册表,并且可以在程序的任何地方使用绝对不会出现重新启动的问题。但其只能在特定的位置进行操作,如需进行复杂操作需要调用API,不修改机器硬件配置的话就不需要重起计算机。
解决方案 »
- 关于俄罗斯方块小游戏
- 我自已做的dll文件,可以实现自动注册吗?即不需执行regsvr32的操作?,想编写绿色软件,拷过来就能用
- 如何循环datagrid某一列的数据
- 如何:不需要外部的manifest文件,使VB生成的程序显示XP样式效果?(在XP系统下面)
- 用vb打开一个WORD文件后,怎样将该文件放到最前面?内详~~~
- 救命!!等到mediaplayer播放结束,如何unload窗体
- sql查询问题, 急救!100分
- 使用msgbox怎么显示从数据表中查询的一天记录?
- 工程外包,待遇不错的,不知道大家是否有兴趣
- 求大神解答此难题,小弟先跪谢了
- 如何用VB实现对注册表的设置?谢谢你的帮助!
- 判断用户是否登录了nt网络
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPublic Enum hKeyConstants
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum' DWORD型 TYPE
Public Enum RegTypeConstants
' REG_NONE = (0) '
REG_SZ = (1) ' string
' REG_EXPAND_SZ = (2)
' REG_BINARY = (3) 'BINARY
REG_DWORD = (4) ' 32bit
REG_DWORD_LITTLE_ENDIAN = (4) '
' REG_DWORD_BIG_ENDIAN = (5) '
' REG_LINK = (6) ' Unicode
' REG_MULTI_SZ = (7) '
' REG_RESOURCE_LIST = (8) '
End Enum
Private Const ERROR_SUCCESS As Long = 0Private Declare Function SHSetValue Lib "SHLWAPI.DLL" Alias "SHSetValueA" (ByVal hKey As Long, ByVal pszSubKey As String, ByVal pszValue As String, ByVal dwType As Long, pvData As Any, ByVal cbData As Long) As Long
Private Declare Function SHEnumKeyEx Lib "SHLWAPI.DLL" Alias "SHEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal pszName As String, pcchName As Long) As Long
Private Declare Function SHGetValue Lib "SHLWAPI.DLL" Alias "SHGetValueA" (ByVal hKey As Long, ByVal pszSubKey As String, ByVal pszValue As String, pdwType As Long, pvData As Any, pcbData As Long) As LongPrivate Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate Const KEY_QUERY_VALUE = &H1
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_SET_VALUE = &H2
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const SYNCHRONIZE = &H100000
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))Public Function RegSetValue(hInKey As hKeyConstants, ByVal SubKey As String, ByVal ValName As String, RegType As RegTypeConstants, ByVal Value As Variant) As Boolean
' InKey : key
' SubKey : SubKey
' ValName : Name
' RegType : datetype
' Value : Values
' Return : True, False
Dim lnghSubKey As Long
Dim lngValue As Long
Dim strValue As String
Dim lngResult As Long
'default values
RegSetValue = False
Select Case RegType
Case REG_DWORD, REG_DWORD_LITTLE_ENDIAN
' set values
lngValue = CLng(Value)
lngResult = SHSetValue(hInKey, _
SubKey, _
ValName, _
REG_DWORD, _
lngValue, _
Len(lngValue))
RegSetValue = (lngResult = ERROR_SUCCESS)
Case REG_SZ
' Buf
strValue = CStr(Value)
'
lngResult = SHSetValue(hInKey, _
SubKey, _
ValName, _
REG_SZ, _
ByVal strValue, _
CLng(LenB(StrConv(strValue, vbFromUnicode)) + 1))
RegSetValue = (lngResult = ERROR_SUCCESS)
End Select
End FunctionPublic Function RegGetValue(hInKey As hKeyConstants, ByVal SubKey As String, ByVal ValName As String, RegType As RegTypeConstants, ByVal Default As Variant) As Variant
Dim varRetVal As Variant
Dim lnghSubKey As Long
Dim lngBuffer As Long
Dim strBuffer As String
Dim lngResult As Long varRetVal = Default Select Case RegType
Case REG_DWORD, REG_DWORD_LITTLE_ENDIAN
lngResult = SHGetValue(hInKey, SubKey, ValName, REG_DWORD, lngBuffer, Len(lngBuffer))
If lngResult = ERROR_SUCCESS Then
varRetVal = lngBuffer
End If Case REG_SZ
strBuffer = String(256, vbNullChar)
lngResult = SHGetValue(hInKey, SubKey, ValName, REG_SZ, ByVal strBuffer, Len(strBuffer))
If lngResult = ERROR_SUCCESS Then
varRetVal = Left$(strBuffer, InStr(strBuffer, vbNullChar) - 1)
End If End Select RegGetValue = varRetVal
End FunctionPublic Function EnumKeys(hInKey As hKeyConstants, ByVal SubKey As String, Keys() As String) As Long
Dim lngResult As Long
Dim hSubKey As Long
Dim lngKeyCount As Long
Dim strName As String If SubKey = vbNullString Then
hSubKey = hInKey
Else
If RegOpenKeyEx(hInKey, SubKey, 0, KEY_ALL_ACCESS, hSubKey) <> ERROR_SUCCESS Then
Exit Function
End If
End If
Do
strName = String(256, vbNullChar)
lngResult = SHEnumKeyEx(hSubKey, lngKeyCount, strName, Len(strName))
If lngResult = ERROR_SUCCESS Then
ReDim Preserve Keys(lngKeyCount) As String
Keys(lngKeyCount) = Left$(strName, InStr(strName, vbNullChar) - 1)
lngKeyCount = lngKeyCount + 1
Else
Exit Do
End If
Loop
RegCloseKey hSubKey
EnumKeys = lngKeyCount
End Function用以上的代码生成一个类Class,例如:Class Registry什么的,用的时候
new Registry从别的地方抄的,自己琢磨一下吧?
findwindow
postquitmessage to kill explore
接着是 shell explore.exe
loop wait for the new explore to appear