Тема: AHK: Смена обоев рабочего стола
Требует наличия Gdip.ahk в пользовательской библиотеке (папка Мои документы\AutoHotkey\Lib\).
SetWallpaper(sWallpaperPath, nStyle = 3)
{
/*
Функция меняет обои рабочего стола.
sWallpaperPath — путь к файлу с изображением
nStyle = 1 — по центру
nStyle = 2 — замостить
nStyle = 3 — растянуть
Только для Win 7:
nStyle = 4 — по размеру
nStyle = 5 — заполнение
Требует наличия Gdip.ahk в пользовательской библиотеке.
http://www.autohotkey.net/~tic/Gdip.ahk
*/
SPI_SETDESKWALLPAPER = 0x14
SPIF_SENDWININICHANGE = 0x2
SPIF_UPDATEINIFILE = 0x1
bTile := nStyle = 2 ? 1 : 0
iStyle := (nStyle = 1 || nStyle = 2) ? 0 : nStyle = 4 ? 6 : nStyle = 5 ? 10 : 2
if !FileExist(A_AppData "\Wallpaper")
FileCreateDir, %A_AppData%\Wallpaper
dFile := A_AppData "\Wallpaper\Wallpaper.bmp"
SplitPath, sWallpaperPath,,, OutExtension
if OutExtension != bmp
{
if !pToken := Gdip_Startup()
{
MsgBox, 48, Ошибка GDI+, Убедитесь в наличии gdiplus.dll в вашей системе!
Return
}
if !pBitmap := Gdip_CreateBitmapFromFile(sWallpaperPath)
{
MsgBox, 48, Ошибка GDI+, Невозможно извлечь изображение из файла.
Gdip_Shutdown(pToken)
Return
}
Gdip_SaveBitmapToFile(pBitmap, dFile)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)
}
Else
FileMove, %sWallpaperPath%, %dFile%, 1
RegWrite, REG_SZ, HKCU, Control Panel\Desktop, TileWallpaper, %bTile%
RegWrite, REG_SZ, HKCU, Control Panel\Desktop, WallpaperStyle, %iStyle%
DllCall("SystemParametersInfo", UInt, SPI_SETDESKWALLPAPER, UInt, 0
, Str, dFile, UInt, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE)
}
Авторы скрипта — teadrinker и YMP.
Задавайте вопросы по работе скрипта и сообщайте о замеченных багах в этой теме.