Что нового

Смена картинки рабочего стола. Как?

sss

Продвинутый
Сообщения
332
Репутация
96
Возник такой вопрос: можно ли средствами АвтоИта изменить фон рабочего стола? Не используя ничего видимого (т.е. без всяких окон)?
 

Arei

Скриптер
Сообщения
938
Репутация
115
да можно

вот написал скрипт CreatoR

пользуйтесь поиском вот пример с Jpg


Код:
#include <GDIPlus.au3>

$sFile = "C:\MyWallpaper.jpg"

_ChangeWallpaper($sFile, 1)

; Changes the wallpaper to $sFilename using $iType as:
; 1 Tiled
; 2 Centered
; 3 Stretched
; any other value (usually 0) unchanged
;
; Returns
; 1 if everything is allright.
; -1 if $sFile does not exist. @error is set to 1
Func _ChangeWallpaper($sFile, $iType)
    If Not FileExists($sFile) Then Return SetError(1, 0, -1)
    
    Local Const $SPIF_UPDATEINIFILE = 0x0001
    Local Const $SPIF_SENDCHANGE = 0x0002
    Local Const $SPI_SETDESKWALLPAPER = 0x0014
    Local $sTemp_File = @AppDataDir & "\Microsoft\Wallpaper1.bmp"
    Local $hImage, $sCLSID, $tBuffer
    
    ;Convert image to BMP format
    If StringRegExpReplace($sFile, "^.*\.", "") <> 'bmp' Then
        _GDIPlus_Startup()
        
        $hImage = _GDIPlus_ImageLoadFromFile($sFile)
        $sCLSID = _GDIPlus_EncodersGetCLSID("bmp")
        _GDIPlus_ImageSaveToFileEx($hImage, $sTemp_File, $sCLSID)
        _GDIPlus_Shutdown()
    Else
        FileCopy($sFile, $sTemp_File, 1)
    EndIf
    
    $sFile = $sTemp_File
    
    Switch $iType
        Case 1
            RegWrite('HKCU\Control Panel\Desktop', 'TileWallpaper', 'REG_SZ', '1')
            RegWrite('HKCU\Control Panel\Desktop', 'WallpaperStyle', 'REG_SZ', '0')
        Case 2
            RegWrite('HKCU\Control Panel\Desktop', 'TileWallpaper', 'REG_SZ', '0')
            RegWrite('HKCU\Control Panel\Desktop', 'WallpaperStyle', 'REG_SZ', '0')
        Case 3
            RegWrite('HKCU\Control Panel\Desktop', 'TileWallpaper', 'REG_SZ', '0')
            RegWrite('HKCU\Control Panel\Desktop', 'WallpaperStyle', 'REG_SZ', '2')
    EndSwitch
    
    $tBuffer = DllStructCreate("char Text[" & StringLen($sFile) + 1 & "]")
    DllStructSetData($tBuffer, "Text", $sFile)
    
    RegWrite('HKCU\Control Panel\Desktop', 'Wallpaper', 'REG_SZ', $sFile)
    DllCall("User32.dll", "int", "SystemParametersInfo", "int", $SPI_SETDESKWALLPAPER, "int", 0, _
        "ptr", DllStructGetPtr($tBuffer), "int", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE))
    
    Return 1
EndFunc
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Спасибо, работает. А можно как нибудь менять наборы иконок, курсоры и т.п.? И контекстное меню (клик правой кнопкой)? Просто хочу сделать 3 рабочие среды, игровая монтажная и программная, переключение по ярлыкам (разные скрипты АвтоИт). Вирт. рабочие столы - неинтересно )). Если что, звиняйте что все и сразу и как мед так ложкой) есть ли такие возможности?
-------------------------------------------------------------------------------------------------------------------------------
З.Ы: нашел про контекстное меню. Кому интересно тык
 

Siroga00VII

Siroga
Сообщения
33
Репутация
-2
Возник такой вопрос: можно ли средствами AutoIt сделать слайд шоу фона рабочего стола?
 
Верх