Что нового

Слай шоу на робочем столе

Siroga00VII

Siroga
Сообщения
33
Репутация
-2
Как спомощу AUTOIT-а сделать Слай шоу на робочем столе с ефектами
:scratch: :scratch: :scratch: :scratch: :scratch: :scratch: :scratch: :scratch: :scratch: :scratch:
sweating.gif

question.jpg

5214561c7b2d35.35997630.jpg
 
Автор
Siroga00VII

Siroga00VII

Siroga
Сообщения
33
Репутация
-2
Зделал Слай шоу
Код:
; НАЧАЛО

; Смена рисунка рабочего стола





; ========================================================================================================


#include <GDIPlus.au3>

;$sFile = "C:\MyWallpaper.jpg"
$pFile = @ScriptDir & "\*.jpg"
$sPath = @ScriptDir & "\"
;
$hSearch = FileFindFirstFile($pFile) ; возвращает дескриптор поиска
;MsgBox(1, "файл:", $pFile)
; Проверка, является ли поиск успешным


If $hSearch = -1 Then
 Exit
EndIf

Dim $aFile[0]

While 1
    $sFile = FileFindNextFile($hSearch) ; возвращает имя следующего файла, начиная от первого до последнего
    If @error Then ExitLoop

ReDim $aFile[UBound($aFile) + 1]
$aFile[UBound($aFile) - 1] = $sPath & $sFile


    
WEnd
 ;MsgBox(1, "Следующий файл / каталог:", )

; Закрывает дескриптор поиска
FileClose($hSearch)
While 1
_ChangeWallpaper($aFile[Random(0, UBound($aFile) - 1, 1)], 1)
		
sleep(100000)

WEnd

; 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
; ========================================================================================================

; КОНЕЦ

Источник http://autoit-script.ru/index.php?topic=3104.0
Но как зделать плавный пернход БЕЗ МИРЦАНИЯ не знаю
:-\ :-X
Какие есть идеи :'(
 

GUIMish

Знающий
Сообщения
122
Репутация
12
Можно еще и так:

Код:
Global $Wall[6]

$Wall[1] = "URL 1"
$Wall[2] = "URL 2"
$Wall[3] = "URL 3"
$Wall[4] = "URL 4"
$Wall[5] = "URL 5"

Up()

While 1
	Sleep(100)
WEnd

Func Up()
;~ 	Wallpapers(Изображения, Количество изображений, Время изменения "1 сек = 1000")
	Wallpapers($Wall, 5)
EndFunc

Func Wallpapers($Wallpaper, $Num, $Sec = 1000)
	For $i = 1 to $Num
		Sleep($Sec)
		RegWrite('HKCU\Control Panel\Desktop','TileWallpaper' ,'reg_sz','0')
		RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','2')
		DllCall("user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $Wallpaper[$i], "int", 0x0003)
		If $i = $Num Then
			Up()
		EndIf
	Next
EndFunc
 
Автор
Siroga00VII

Siroga00VII

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