Что нового

Обои на рабочий стол.

ZanMax

Тестер
Сообщения
120
Репутация
5
Всем привет. Всех с Новым Годом.
:IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1:

Как всегда возник вопрос.Есть ли в AutoIT что то для работы с робочим столом.
Есть 1500 ПК на всех нужно изменить Обои на рабочем столе.( на корпоративные )

Как реализовать ???

P.S. как запустить на 1500 ПК я знаю :smile: нужно реализовать саму установку.

Спасибо большое.
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
ZanMax
Вариант простенький, но работает только с форматом BMP...

Код:
; НАЧАЛО

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

 $sTemp="x:\script\123.bmp"

 RegWrite('HKCU\Control Panel\Desktop','TileWallpaper' ,'reg_sz','0')
 RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','2')

 $tBuffer = DllStructCreate("char Text["&StringLen($sTemp)+1&"]")
 DllStructSetData($tBuffer,"Text",$sTemp)
 DllCall("user32.dll","int","SystemParametersInfo","int",0x0014,"int",0,"int",DllStructGetPtr($tBuffer),"int",0x0003)

; КОНЕЦ
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
:'( С BMP не подходит. Размер картинки в BMP формате занимает 1.58 мб.
Картинку все будут тянуть из одного места. Очень большая нагрузка на канал.
Когда все придут на работе и включат ПК канал просто ляжет.

Как можно JPG установить ?
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
ZanMax
Тот же вариант с конвертированием...
Нужен UDF gdiplus.au3...

Код:
; НАЧАЛО

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

 #include <gdiplus.au3>

 $SOURCE="X:\123.jpg"
 $TARGET="X:\123.bmp"
 _GDIPlus_Startup()
 $IMAGE=_GDIPlus_ImageLoadFromFile($SOURCE)
 _GDIPlus_ImageSaveToFile($IMAGE,$TARGET)
 _GDIPlus_ShutDown()

 RegWrite('HKCU\Control Panel\Desktop','TileWallpaper' ,'reg_sz','0')
 RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','2')

 $tBuffer=DllStructCreate("char Text["&StringLen($TARGET)+1&"]")
 DllStructSetData($tBuffer,"Text",$TARGET)
 DllCall("user32.dll","int","SystemParametersInfo","int",0x0014,"int",0,"int",DllStructGetPtr($tBuffer),"int",0x0003)

; КОНЕЦ
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ZanMax [?]
Как можно 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
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
ZanMax

$CmdLine[0] - Количество параметров командной строки
$CmdLine[1] - первый параметр
$CmdLine[2] - второй параметр
и так далее...
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
Код:
#include <gdiplus.au3>
 
dim $JpgFile,$param,$SOURCE,$TARGET,$IMAGE,$tBuffer;

 if $CmdLine[0] =0 Then
$JpgFile = FileOpenDialog("Выберите jpg файл..", @ScriptDir, "Images (*.jpg;*.jpeg;*.bmp)", 1)
$param=$JpgFile


 $SOURCE=$param 
 $TARGET=@SystemDir & "\wallpaper_pos_novus.bmp"
 _GDIPlus_Startup()
 $IMAGE=_GDIPlus_ImageLoadFromFile($SOURCE)
 _GDIPlus_ImageSaveToFile($IMAGE,$TARGET)
 _GDIPlus_ShutDown()

 RegWrite('HKCU\Control Panel\Desktop','TileWallpaper' ,'reg_sz','0')
 RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','2')

 $tBuffer=DllStructCreate("char Text["&StringLen($TARGET)+1&"]")
 DllStructSetData($tBuffer,"Text",$TARGET)
 DllCall("user32.dll","int","SystemParametersInfo","int",0x0014,"int",0,"int",DllStructGetPtr($tBuffer),"int",0x0003)


Else

$param = $CmdLine[1]

 $SOURCE=$param 
 $TARGET=@SystemDir & "\wallpaper_pos_novus.bmp"
 _GDIPlus_Startup()
 $IMAGE=_GDIPlus_ImageLoadFromFile($SOURCE)
 _GDIPlus_ImageSaveToFile($IMAGE,$TARGET)
 _GDIPlus_ShutDown()

 RegWrite('HKCU\Control Panel\Desktop','TileWallpaper' ,'reg_sz','0')
 RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','2')

 $tBuffer=DllStructCreate("char Text["&StringLen($TARGET)+1&"]")
 DllStructSetData($tBuffer,"Text",$TARGET)
 DllCall("user32.dll","int","SystemParametersInfo","int",0x0014,"int",0,"int",DllStructGetPtr($tBuffer),"int",0x0003)

EndIf


Всем спасибо !!! ЕЩЕ раз всех с празниками :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Так намного удобнее:

Код:
#include <GDIPlus.au3>

If $CmdLine[0] > 0 Then
	$sFile = $CmdLine[1]
Else
	$sFile = FileOpenDialog("Выберите jpg файл..", @ScriptDir, "Images (*.jpg;*.jpeg;*.bmp)", 1)
	If @error Then Exit
EndIf

_ChangeWallpaper($sFile, 1) ;Это функция из поста выше
 

Siroga00VII

Siroga
Сообщения
33
Репутация
-2
Re: Обои на рабочий стол

Возник такой вопрос: можно ли средствами AutoIt сделать слайд шоу фона рабочего стола?
Картинки должны сменятся с эффектом!
 
Верх