<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Ahk: значки на рабочем столе]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5222&amp;type=atom" />
	<updated>2018-06-04T01:42:45Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5222</id>
		<entry>
			<title type="html"><![CDATA[Re: Ahk: значки на рабочем столе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125750#p125750" />
			<content type="html"><![CDATA[<p>Есть еще 13-кб программа &quot;IconPositions&quot;, с возможностью сохранения позиций значков в реестр и расстановки по местам:</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2018-06-04T01:42:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125750#p125750</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Ahk: значки на рабочем столе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65402#p65402" />
			<content type="html"><![CDATA[<p>Действительно не работает, приношу извинения. Вероятно, это для более ранней версии ОС.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2012-11-05T04:55:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65402#p65402</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Ahk: значки на рабочем столе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65390#p65390" />
			<content type="html"><![CDATA[<p>Чтобы значки не разбегались. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p><em><span class="bbu"> Сохранение расположения иконок на Рабочем столе</span></em></p><p>Часто при смене расширения иконки смещаются, и если их много, то всё больше пропадает желание их расставлять по местах. Если Вам это порядком надоело, то нужно сделать следующее:</p><p>Найти в реестре ключ: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams.<br />Экспортировать весь раздел.<br />Прописать в autoexec.bat строчку, например regedit.exe c:\windows\regystry\desctop.reg (подставить свой путь к сохранённому файлу) чтобы настройки востанавливались автоматически.<br />При появлении новой иконки на рабочем столе нужно заново экспортировать ключ реестра. </p><p><a href="http://windowssecrets.narod.ru/win.html">Источник</a></p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2012-11-04T08:00:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65390#p65390</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Ahk: значки на рабочем столе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42299#p42299" />
			<content type="html"><![CDATA[<p>Количество:<br /></p><div class="codebox"><pre><code>ControlGet, ItemCount, List, Count, SysListView321, Program Manager
MsgBox, % ItemCount</code></pre></div><p>Названия всех:<br /></p><div class="codebox"><pre><code>ControlGet, IconList, List,, SysListView321, Program Manager ahk_class Progman
MsgBox, % IconList</code></pre></div><p><a href="http://www.autohotkey.com/forum/topic10721.html#101835">Координаты</a>:<br /></p><div class="codebox"><pre><code>ControlGet, IconList, List,, SysListView321, Program Manager ahk_class Progman
Loop, Parse, IconList, `n
{
   WinGet, pid_target, PID, Program Manager ahk_class Progman

   hp_explorer := DllCall(&quot;OpenProcess&quot;
                      , UInt, 0x18                              ; PROCESS_VM_OPERATION|PROCESS_VM_READ
                      , Int, false
                      , UInt, pid_target)

   remote_buffer := DllCall( &quot;VirtualAllocEx&quot;
                      , UInt, hp_explorer
                      , UInt, 0
                      , UInt, 0x1000
                      , UInt, 0x1000                            ; MEM_COMMIT
                      , UInt, 0x4)                              ; PAGE_READWRITE

   ; LVM_GETITEMPOSITION
   SendMessage, 0x1000+16,% A_Index -1, remote_buffer, SysListView321, Program Manager ahk_class Progman

   VarSetCapacity(buffer, 16)
   result := DllCall(&quot;ReadProcessMemory&quot;
                , UInt, hp_explorer
                , UInt, remote_buffer
                , UInt, &amp;buffer
                , UInt, 16
                , UInt, 0)

   x := NumGet(buffer)
   y := NumGet(buffer, 4)

   result := DllCall(&quot;VirtualFreeEx&quot;
                   , UInt, hp_explorer
                   , UInt, remote_buffer
                   , UInt, 0
                   , UInt, 0x8000)         

   result := DllCall(&quot;CloseHandle&quot;, UInt, hp_explorer)

   MsgBox, %A_LoopField%`nLocated at: %x% %y%
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2010-11-28T16:35:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42299#p42299</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Ahk: значки на рабочем столе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42296#p42296" />
			<content type="html"><![CDATA[<p>В одном источнике <a href="http://forum.shelek.ru/index.php/topic,22065.0.html">http://forum.shelek.ru/index.php/topic,22065.0.html</a> нашёл такой код<br /></p><div class="codebox"><pre><code>#include &lt;commctrl.h&gt;

 //получаем хэндл рабочего стола как бы, потом хэндлы дочерних элементов  ...
 HANDLE r=FindWindow(&quot;ProgMan&quot;,NULL);
 r= GetWindow(r, GW_CHILD);
 r= GetWindow(r, GW_CHILD);

 //получаем количество иконок на рабочем столе
 int cnt=SendMessage(r,LVM_GETITEMCOUNT,0,0);
 //отправляя сообщение LVM_GETITEMTEXT, можем узнать имя иконки, 
 третьим параметром для SendMessage указываем номер иконки. 
 Здесь точно не скажу как сделать, читал что так просто имя иконки не взять, нужно читать с памяти другого процесса, 
 но добить это дело не хватило терпения)))
 
 TPoint xy;     //здесь будем хранить позицию иконки
 SendMessage(r,LVM_GETITEMPOSITION,i,(LONG)&amp;xy);  //запишет в xy позицию иконки с номером i
 //изменяя xy.x и xy.y , зададим новую позицию
 SendMessage(r,LVM_GETITEMPOSITION,i,(LONG)&amp;xy);  //и установим для иконки новую позицию на столе))</code></pre></div><p>Можно в Autokotkey с помощью оконных сообщений реализовать что-то то подобное? Требуется получить&nbsp; количество значков на рабочем столе и координаты каждого значка. По возможности (не обязательно) получить имя каждого из них.<br />В общем, трудности возникают уже на этапе&nbsp; </p><div class="codebox"><pre><code>ControlGet, OutputVar, Hwnd,, SysListView32, ahk_class Progman</code></pre></div><p>А в основной части кода нарисовывается </p><div class="codebox"><pre><code>SendMessage, LVM_GETITEMPOSITION, 1, (LONG)&amp;xy, SysListView32,, Program Manager</code></pre></div><p>Прошу помочь.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2010-11-28T12:58:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42296#p42296</id>
		</entry>
</feed>
