<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK/CMD: Смена обоев рабочего стола]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5414</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5414&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK/CMD: Смена обоев рабочего стола».]]></description>
		<lastBuildDate>Tue, 25 Jan 2011 10:01:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44392#p44392</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Попробовал, кстати, закомментировать вот эту строчку:<br /></p><div class="codebox"><pre><code>RegWrite, REG_SZ, HKCU, Control Panel\Desktop, Wallpaper, %dFile%</code></pre></div><p>Работает и без неё, путь в реестре всё равно появляется.</p></blockquote></div><p>Да, у меня тоже.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 25 Jan 2011 10:01:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44392#p44392</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44386#p44386</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Так работает?</p></blockquote></div><p>Да, так работает нормально. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Правда в первый раз Винда зачем-то перекодировала рисунок обратно в jpg и поместила в папку, где она хранит обои для текущей темы. Соответственно и в реестре путь указывал туда. Хотя в диалоге выбора обоев был путь к твоему файлу bmp. Но при последующих запусках скрипта такого уже не было. Попробовал, кстати, закомментировать вот эту строчку:<br /></p><div class="codebox"><pre><code>RegWrite, REG_SZ, HKCU, Control Panel\Desktop, Wallpaper, %dFile%</code></pre></div><p>Работает и без неё, путь в реестре всё равно появляется.</p><p>Да, и вот это не совсем правильно, наверно:<br /></p><div class="quotebox"><blockquote><p>Функция меняет заставку рабочего стола.</p></blockquote></div><p>Т.к. провоцирует путаницу с заставкой экрана.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Tue, 25 Jan 2011 03:47:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44386#p44386</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44384#p44384</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Наверно, bTile и iStyle можно объединить в один параметр, проще будет.</p></blockquote></div><p>Здравая идея!<br /></p><div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Так что, наверно, в %AppData% приложение должно создать свою папку и туда такие вещи сохранять. Это если строго по идеологии. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p></blockquote></div><p>Ну, раз в Windows не пускают, пусть в %AppData% полежит. Так работает?<br /></p><div class="codebox"><pre><code>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 &quot;\Wallpaper&quot;)
      FileCreateDir, %A_AppData%\Wallpaper
   dFile := A_AppData &quot;\Wallpaper\Wallpaper.bmp&quot;

   SplitPath, sWallpaperPath,,, OutExtension
   if OutExtension != bmp
   {
      if !pToken := Gdip_Startup()
      {
         MsgBox, 48, Ошибка GDI+, Убедитесь в наличии gdiplus.dll в вашей системе!
         ExitApp
      }
      if !pBitmap := Gdip_CreateBitmapFromFile(sWallpaperPath)
      {
         MsgBox, 48, Ошибка GDI+, Невозможно извлечь изображение из файла.
         Gdip_Shutdown(pToken)
         ExitApp
      }
      Gdip_SaveBitmapToFile(pBitmap, dFile)
      Gdip_DisposeImage(pBitmap)
      Gdip_Shutdown(pToken)
   }
   Else
      FileMove, %sWallpaperPath%, %dFile%, 1

   RegWrite, REG_SZ, HKCU, Control Panel\Desktop, Wallpaper, %dFile%
   RegWrite, REG_SZ, HKCU, Control Panel\Desktop, TileWallpaper, %bTile%
   RegWrite, Reg_SZ, HKCU, Control Panel\Desktop, WallpaperStyle, %iStyle%

   DllCall(&quot;SystemParametersInfo&quot;, UInt, SPI_SETDESKWALLPAPER, UInt, 0
      , Str, dFile, UInt, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 24 Jan 2011 21:18:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44384#p44384</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44375#p44375</link>
			<description><![CDATA[<p>По идее, эта преобразованная копия картинки — данные приложения, а не самого пользователя. Так что, наверно, в %AppData% приложение должно создать свою папку и туда такие вещи сохранять. Это если строго по идеологии. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 24 Jan 2011 10:04:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44375#p44375</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44374#p44374</link>
			<description><![CDATA[<p>А куда правильнее сохранять? В &quot;Мои документы&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 24 Jan 2011 09:03:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44374#p44374</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44371#p44371</link>
			<description><![CDATA[<p>Наверно, bTile и iStyle можно объединить в один параметр, проще будет.</p><p>При растягивании картинка может исказиться, если соотношение сторон не такое же как у экрана. Если выбрать &quot;по размеру&quot;, то она растягивается только до тех пор, пока по вертикали или горизонтали не упрётся в края экрана. Часть экрана может остаться незакрытой. При заполнении она продолжает увеличиваться, пока весь экран не заполнится, при этом где-то она может вылезти за пределы, если не вписывается точно в экран. Но искажения в обоих случаях нет.</p><p>Сохранять что-то в папку Windows вообще-то идеологически неправильно. Семёрка, кстати, всё равно туда не пустит. По видимости картинка сохранится туда, а фактически в папку пользователя — C:\Users\User\AppData\Local\VirtualStore\Windows. Поначалу всё нормально, но после перезагрузки обои не находятся. Та же история с Program Files.</p><p>Про эту виртуализацию есть в статье Руссиновича — <a href="http://technet.microsoft.com/ru-ru/magazine/2007.06.uac.aspx">Управление учетными записями пользователей Windows Vista: взгляд изнутри</a>.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 24 Jan 2011 05:41:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44371#p44371</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44366#p44366</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Кстати, есть ещё параметр WallpaperStyle. Если выбрать &quot;растянуть&quot;, то он меняется с 0 на 2. Можно, наверно, и его задействовать. В семёрке ещё добавились для него значения &quot;по размеру&quot; (6) и &quot;заполнение&quot; (10).</p></blockquote></div><p>Да, я про него забыл, почему-то. Тогда так:<br /></p><div class="codebox"><pre><code>SetWallpaper(sWallpaperPath, bTile = 0, iStyle = 0)
{
/*
Функция меняет заставку рабочего стола.
sWallpaperPath — путь к файлу с изображением
bTile = 0 — по центру
bTile = 1 — &quot;замостить&quot;

iStyle = 0 — по центру
iStyle = 2 — растянуть при bTile = 0

Только для Win 7 при bTile = 0:
iStyle = 6 — по размеру
iStyle = 10 — заполнение

Требует наличия Gdip.ahk в пользовательской библиотеке.
http://www.autohotkey.net/~tic/Gdip.ahk
*/

   SPI_SETDESKWALLPAPER = 0x14
   SPIF_SENDWININICHANGE = 0x2
   SPIF_UPDATEINIFILE = 0x1

   dFile := A_WinDir &quot;\ACD Wallpaper.bmp&quot;
   
   SplitPath, sWallpaperPath,,, OutExtension
   if OutExtension != bmp
   {
      if !pToken := Gdip_Startup()
      {
         MsgBox, 48, Ошибка GDI+!, Убедитесь в наличии gdiplus.dll в вашей системе!
         ExitApp
      }
      pBitmap := Gdip_CreateBitmapFromFile(sWallpaperPath)
      Gdip_SaveBitmapToFile(pBitmap, dFile)
      Gdip_DisposeImage(pBitmap)
      Gdip_Shutdown(pToken)
   }
   Else
      FileMove, %sWallpaperPath%, %dFile%, 1

   RegWrite, REG_SZ, HKCU, Control Panel\Desktop, Wallpaper, %dFile%
   RegWrite, REG_SZ, HKCU, Control Panel\Desktop, TileWallpaper, %bTile%
   RegWrite, Reg_SZ, HKCU, Control Panel\Desktop, WallpaperStyle, %iStyle%

   DllCall(&quot;SystemParametersInfo&quot;, UInt, SPI_SETDESKWALLPAPER, UInt, 0
      , Str, dFile, UInt, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE)
}</code></pre></div><p>А чем отличается &quot;по размеру&quot; от &quot;по центру&quot;? И что такое &quot;заполнение&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 23 Jan 2011 19:38:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44366#p44366</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44365#p44365</link>
			<description><![CDATA[<p><strong>Евген</strong>, не понял вопроса. Что значит «привести к такому же формату» и зачем? Если «как то же самое сделать через cmd», то не знаю.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 23 Jan 2011 19:05:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44365#p44365</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44354#p44354</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Мой код работает с любыми.</p></blockquote></div><p>а можно Вашу строчку<br /></p><div class="codebox"><pre><code>DllCall(&quot;SystemParametersInfo&quot;, UInt, SPI_SETDESKWALLPAPER, UInt, 0, Str, File, UInt, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE)}</code></pre></div><p>привести к такому же формату<br /></p><div class="codebox"><pre><code>RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True</code></pre></div><p>?</p>]]></description>
			<author><![CDATA[null@example.com (Евген)]]></author>
			<pubDate>Sun, 23 Jan 2011 14:32:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44354#p44354</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44349#p44349</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />В W7 работает. Кстати, есть ещё параметр WallpaperStyle. Если выбрать &quot;растянуть&quot;, то он меняется с 0 на 2. Можно, наверно, и его задействовать. В семёрке ещё добавились для него значения &quot;по размеру&quot; (6) и &quot;заполнение&quot; (10).</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 23 Jan 2011 13:53:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44349#p44349</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44341#p44341</link>
			<description><![CDATA[<p>Мой код работает с любыми.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 23 Jan 2011 11:53:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44341#p44341</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44340#p44340</link>
			<description><![CDATA[<p>Потому что работает только с BMP файлами !</p>]]></description>
			<author><![CDATA[null@example.com (Евген)]]></author>
			<pubDate>Sun, 23 Jan 2011 11:51:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44340#p44340</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44339#p44339</link>
			<description><![CDATA[<p>Спасибо <strong>teadrinker</strong>, подойдет.</p><p>Вот искал и нашел команды, но в результате только синий экран почему то: <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br /></p><div class="codebox"><pre><code>REG ADD &quot;HKCU\Control Panel\Desktop&quot; /v Wallpaper /d &quot;D:\Picture\Pic.JPG&quot; /f
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (avens)]]></author>
			<pubDate>Sun, 23 Jan 2011 11:44:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44339#p44339</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44338#p44338</link>
			<description><![CDATA[<p>Но это для XP, не знаю, будет ли в семёрке работать. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 23 Jan 2011 11:20:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44338#p44338</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK/CMD: Смена обоев рабочего стола]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44337#p44337</link>
			<description><![CDATA[<p>Писал такое когда-то. Требует наличия <a href="http://www.autohotkey.net/~tic/Gdip.ahk">Gdip.ahk</a> в пользовательской библиотеке.<br /></p><div class="codebox"><pre><code>SetWallpaper(sWallpaperPath, bTile = 0)
{
/*
Функция меняет заставку рабочего стола.
sWallpaperPath — путь к файлу с изображением
bTile = 0 — по центру
bTile = 1 — &quot;замостить&quot;
Требует наличия Gdip.ahk в пользовательской библиотеке.
http://www.autohotkey.net/~tic/Gdip.ahk
*/

    SPI_SETDESKWALLPAPER = 0x14
    SPIF_SENDWININICHANGE = 0x2
    SPIF_UPDATEINIFILE = 0x1

    SplitPath, sWallpaperPath,,, OutExtension
    if OutExtension != bmp
    {
        File := A_WinDir &quot;\ACD Wallpaper.bmp&quot;
        FileDelete, % File
        if !pToken := Gdip_Startup()
        {
            MsgBox, 48, Ошибка GDI+!, Убедитесь в наличии gdiplus.dll в вашей системе!
            ExitApp
        }
        pBitmap := Gdip_CreateBitmapFromFile(sWallpaperPath)
        Gdip_SaveBitmapToFile(pBitmap, File)
        Gdip_DisposeImage(pBitmap)
        Gdip_Shutdown(pToken)
    }
    Else
        File := sWallpaperPath

    RegRead, Value1, HKCU, Control Panel\Desktop, Wallpaper
    RegRead, Value2, HKCU, Control Panel\Desktop, TileWallpaper
    if (Value1 = &quot;&quot; || Value2 = &quot;&quot;)
    {
        MsgBox, 48, Несоответствие ключей реестра!
            , % &quot;Ключи реестра, с которыми работает программа,&quot;
            .    &quot;`nне существуют в Вашей системе!&quot;
        ExitApp
    }

    RegWrite, REG_SZ, HKCU, Control Panel\Desktop, Wallpaper, %File%
    RegWrite, REG_SZ, HKCU, Control Panel\Desktop, TileWallpaper, %bTile%

    DllCall(&quot;SystemParametersInfo&quot;, UInt, SPI_SETDESKWALLPAPER, UInt, 0
        , Str, File, UInt, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 23 Jan 2011 11:10:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44337#p44337</guid>
		</item>
	</channel>
</rss>
