Dark Ange1,
Попробуйте так:
Код:
$sKeyName = 'HKEY_CURRENT_USER\Control Panel\Desktop'
;Для Windows XP:
$sValue_1 = 'Wallpaper'
$sValue_2 = 'ConvertedWallpaper'
MsgBox(0, '', RegRead($sKeyName, $sValue_1) & @CRLF & RegRead($sKeyName, $sValue_2))
;Для Windows 7:
MsgBox(0, '', RegRead($sKeyName, $sValue_1))
Удалить и восстановить обратно обои у меня так получилось:
Код:
#RequireAdmin
;Проверял только на Windows XP и Windows 7
$iDel = _DelWallpaper()
If $iDel = -2 Then
MsgBox(0, '', 'Не поддерживается')
Exit
ElseIf $iDel = 1 Then
Sleep(3000)
$iSet = _SetWallpaper()
EndIf
Func _DelWallpaper()
If @OSVersion <> 'WIN_XP' And @OSVersion <> 'WIN_7' Then
Return SetError(1, 0, -2)
EndIf
Local Const $SPIF_UPDATEINIFILE = 0x0001
Local Const $SPIF_SENDCHANGE = 0x0002
Local Const $SPI_SETDESKWALLPAPER = 0x0014
Local $hImage, $sCLSID, $tBuffer
$tBuffer = DllStructCreate("char Text[""]")
DllStructSetData($tBuffer, "Text", "")
RegWrite('HKCU\Control Panel\Desktop', 'Wallpaper', 'REG_SZ', "")
DllCall("User32.dll", "int", "SystemParametersInfo", "int", $SPI_SETDESKWALLPAPER, "int", 0, _
"ptr", DllStructGetPtr($tBuffer), "int", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE))
Return 1
EndFunc ;==>_DelWallpaper
Func _SetWallpaper()
Local Const $SPIF_UPDATEINIFILE = 0x0001
Local Const $SPIF_SENDCHANGE = 0x0002
Local Const $SPI_SETDESKWALLPAPER = 0x0014
Local $hImage, $sCLSID, $tBuffer, $sTemp_File
If @OSVersion = 'WIN_XP' Then
$sTemp_File = @UserProfileDir & "\Local Settings\Application Data\Microsoft\Wallpaper1.bmp"
ElseIf @OSVersion = 'WIN_7' Then
$sTemp_File = @AppDataDir & "\Microsoft\Windows\Themes\TranscodedWallpaper.jpg"
Else
Return SetError(1, 0, -2)
EndIf
If Not FileExists($sTemp_File) Then Return SetError(1, 0, -1)
$tBuffer = DllStructCreate("char Text[" & StringLen($sTemp_File) + 1 & "]")
DllStructSetData($tBuffer, "Text", $sTemp_File)
RegWrite('HKCU\Control Panel\Desktop', 'Wallpaper', 'REG_SZ', $sTemp_File)
DllCall("User32.dll", "int", "SystemParametersInfo", "int", $SPI_SETDESKWALLPAPER, "int", 0, _
"ptr", DllStructGetPtr($tBuffer), "int", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE))
Return 1
EndFunc ;==>_SetWallpaper