Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long '获取系统文件夹路径 (可以不用API)
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long '获取系统环境变量和其他一些系统设置信息(如壁纸)
Const SPI_SETDESKWALLPAPER = 20 '系统壁纸的常熟
Const SPIF_SENDWININICHANGE = &H2 '通知windows配置文件改变
Const SPIF_UPDATEINIFILE = &H1 '更新配置文件
Const REG_SZ As Long = 1 '注册表键值常数
Const HKEY_CURRENT_USER = &H80000001 'HKCU目录标识
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long '关闭一个打开的注册表键值
Private 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 RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long '设置一个已经打开的键值的内容(String字符串)
Private Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long '同上 不过是Long
Private Sub SetKeyValue(sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long, lPredefinedKey As Long) '设置键值过程
lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey) '打开
lRetVal = SetValueEx(hKey, sValueName, lValueType, vValueSetting) '设置键值
RegCloseKey (hKey) '关闭
End Sub
Private Function SetValueEx(ByVal hKey As Long, sValueName As String, lType As Long, vValue As Variant) As Long
Dim lValue As Long
Dim sValue As String
Select Case lType
Case REG_SZ '分支语句 这是键值类型
sValue = vValue & Chr$(0)
SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, sValue, Len(sValue)) '这个类型的数据要用String设置
Case REG_DWORD, REG_BINARY
lValue = vValue
SetValueEx = RegSetValueExLong(hKey, sValueName, 0&, lType, lValue, 4) '这个类型的键值要用Long设置
End Select
End Function
是一套API函数的组合,可以设置系统桌面壁纸。
译成C/C++?