Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось madmasles, 07-09-2010 в 18:38.


Отправлено: 13:45, 07-09-2010 | #2