1

Тема: 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.
Задавайте вопросы по работе скрипта и сообщайте о замеченных багах в этой теме.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg