<?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=9837&amp;type=atom" />
	<updated>2014-07-28T13:19:24Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9837</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85333#p85333" />
			<content type="html"><![CDATA[<p>В коде была ошибка. Вместо (ctrl+f5) было (alt+f5).<br />В шапке исправил.</p>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-28T13:19:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85333#p85333</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85328#p85328" />
			<content type="html"><![CDATA[<p>У меня на ноутбуке почему-то не работает - Windows 7 Домашняя расширенная. В смысле процессы не убиваются.</p>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2014-07-28T12:24:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85328#p85328</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85312#p85312" />
			<content type="html"><![CDATA[<p>Спасибо, вроде разобрался.</p>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-28T06:59:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85312#p85312</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85308#p85308" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Извините не хотел ни кого расстраивать.</p></blockquote></div><p>Да нет, наоборот доставили.<br /></p><div class="quotebox"><blockquote><p>Так что в итоге. Судя по Вашему коду &quot;Если (Я ПРАВИЛЬНО ПОНЯЛ ?)&quot; должно было произойти тоже что и у меня при удалении ключей (Имеется ввиду картинка &quot;ДО\ПОСЛЕ&quot;)</p></blockquote></div><p>Это как раз многие считают злом, если оно вас по каким то причинам устраивает, то за ради бога, удаляйте у себя в реестре что угодно.<br /></p><div class="quotebox"><blockquote><p>Судя по Вашему коду</p></blockquote></div><p>Автор увы не я, а <a href="http://forum.script-coding.com/viewtopic.php?pid=83443#p83443">teadrinker</a>.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-07-28T05:50:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85308#p85308</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85304#p85304" />
			<content type="html"><![CDATA[<p>Я имею ввиду, что в коде указав Soundbeep. Он озвучивается. Из чего следует, что секция выполняется. Только вот такого как при удалении ключей не происходит. То-есть старые значки не удаляются. <br />Вижу только что повторные значки&nbsp; действующих приложений вычищены. <br />Как если бы например значки&nbsp; AuIT или AHK при многократном перезапуске. <br />Мы просто нажали развернуть трей и они сами по себе при анализе винды по одному исчезали. <br />А после выполнения данного Вами скрипта нажимаю на развернуть трей а там исчезать уже не чему.<br />С общими списками как на PRINTscrine ни чего не происходит. <br /></p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p> Это конечно очень радует, особенно наличие смайликов, но нам то, простым смертным как это понимать? Как божью благодать, или проклятье дьявола? Или Вам просто так хорошо, что нам и понимать ничего не надо.</p></blockquote></div><p>Извините не хотел ни кого расстраивать. Просто посмеялся вместе с вами.<br />Так что в итоге. Судя по Вашему коду &quot;Если (Я ПРАВИЛЬНО ПОНЯЛ ?)&quot; должно было произойти тоже что и у меня при удалении ключей (Имеется ввиду картинка &quot;ДО\ПОСЛЕ&quot;), только с более тонким отбором, который осуществляется через фильтр по запущенным приложениям. <br />У меня почему-то этого не происходит, хотя, вроде, все секции скрипта выполняются.</p>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-28T03:55:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85304#p85304</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85303#p85303" />
			<content type="html"><![CDATA[<p>OFF: <img src="//forum.script-coding.com/img/smilies/lol.png" width="15" height="15" /><br />Извините не удержался.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2014-07-28T03:49:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85303#p85303</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85301#p85301" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Со стереоэффектами всё работает.</p></blockquote></div><div class="quotebox"><blockquote><p>После удаления этих ключей очищается вся информация о ярлыках трея и их настроек.</p></blockquote></div><p><strong>Selja8</strong> Это конечно очень радует, особенно наличие смайликов, но нам то, простым смертным как это понимать? Как божью благодать, или проклятье дьявола? Или Вам просто так хорошо, что нам и понимать ничего не надо.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-07-27T18:50:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85301#p85301</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85300#p85300" />
			<content type="html"><![CDATA[<p>Со стереоэффектами всё работает. <br /></p><div class="codebox"><pre><code>    Process, Close, explorer.exe
    RegDelete, HKEY_CURRENT_USER, Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify, IconStreams
    RegDelete, HKEY_CURRENT_USER, Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify, PastIconsStream
    Return</code></pre></div><p>После удаления этих ключей очищается вся информация о ярлыках трея и их настроек.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><a href="https://yadi.sk/d/ZT8TVdOGXyvpC">https://yadi.sk/d/ZT8TVdOGXyvpC</a> -до и после выполнения.</p></div></div>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-27T16:23:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85300#p85300</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85299#p85299" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>вот я и думаю, что не так.</p></blockquote></div><p>Да, действительно не очевидно. Надо написать автору функции, чтобы добавил свето-звуковых эффектов при срабатывании, а то как то неинтересно получается.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-07-27T15:25:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85299#p85299</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85298#p85298" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Selja8 пишет:</cite><blockquote><div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p><a href="http://www.script-coding.com/AutoHotkey/Functions.html">http://www.script-coding.com/AutoHotkey/Functions.html</a></p></blockquote></div><p>Был я тут, понятно всё, ну или почти всё.</p><p>В изложенном Вами кодом имеется вызов этих функций. Там же и пояснения имеются. Только вот код у меня так и не сработал. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p></blockquote></div><p>Как проявляется &quot;не срабатывание&quot; кода?</p><p>Откройте какое нибудь приложение с иконкой в трее (тот же скрипт с &quot;горячей клавишей&quot; или циклом); затем завершите процесс в диспетчере задач; затем запустите скрипт который удаляет &quot;пустые&quot; иконки и возможно Вы увидите результат &quot;срабатывания&quot; (&quot;пустые&quot; иконки должны исчезнуть из трея).</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2014-07-27T15:05:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85298#p85298</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85297#p85297" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Как то это очень странно, ещё вчера было понятно,<br />а теперь внезапно непонятно.</p></blockquote></div><p>Так не заработало же, вот я и думаю, что не так.</p>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-27T14:52:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85297#p85297</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85296#p85296" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p><a href="http://www.script-coding.com/AutoHotkey/Functions.html">http://www.script-coding.com/AutoHotkey/Functions.html</a></p></blockquote></div><p>Был я тут, понятно всё, ну или почти всё.</p><p>В изложенном Вами кодом имеется вызов этих функций. Там же и пояснения имеются. Только вот код у меня так и не сработал. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-27T14:48:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85296#p85296</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85295#p85295" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Selja8 пишет:</cite><blockquote><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Всё правильно, надо просто вызвать функцию.</p></blockquote></div><p>Только вот вызвать функцию что то для меня не просто оказалось. <br /></p><div class="codebox"><pre><code>GoSub Clean
Clean: </code></pre></div><p> Не могли бы вы продолжить вызов после слова Clean.</p></blockquote></div><p>Как то это очень странно, ещё вчера было понятно:<br /></p><div class="codebox"><pre><code>
!space:: gosub 555
555:
SoundPlay, %INTRO%, wait
Speech(A_Hour, A_Min) 
return    
Speech(h, m)  { 
    a := StrSplit(h)
    SoundPlay, % (h = &quot;00&quot; ? 0 : a[1] = 0 ? &quot;&quot; : a[1] = 1 ? h : a[1] 0) &quot;.wav&quot;, wait
    SoundPlay, % (a[1] = 1 || a[2] = 0 ? &quot;&quot; : a[2]) &quot;.wav&quot;, wait
    SoundPlay, % &quot;Hour_&quot; compliance[h] &quot;.wav&quot;, wait
    a := StrSplit(m)
    SoundPlay, % (a[1] = 0 ? &quot;&quot; : a[1] = 1 ? m : a[1] 0) &quot;.wav&quot;, wait
    SoundPlay, % (a[1] = 1 || (a[2] = 0 &amp;&amp; a[1] &gt; 1) ? &quot;&quot; : a[2] = 1 || a[2] = 2 ? a[2] &quot;M&quot; : a[2]) &quot;.wav&quot;, wait
    SoundPlay, % &quot;Min_&quot; compliance[m] &quot;.wav&quot;, wait 
}  
</code></pre></div><p>а теперь внезапно непонятно.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-07-27T14:10:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85295#p85295</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85293#p85293" />
			<content type="html"><![CDATA[<p><a href="http://www.script-coding.com/AutoHotkey/Functions.html">http://www.script-coding.com/AutoHotkey/Functions.html</a></p><p>В приведенном выше коде только содержимое функций.<br />Кроме этого их еще надо вызвать:<br /></p><div class="codebox"><pre><code>
DeleteDummyIcons()   ; вызов функции

DeleteDummyIcons()   ;  сама функция. После знака &quot;{&quot; следует содержимое функции.
{
/*
Недокументированная структура TRAYDATA
typedef TRAYDATA
{
IntPtr hwnd;
uint uID;
uint uCallbackMessage;
uint Reserved;
uint Reserved2;
IntPtr hIcon;
}
*/
   PtrSize := A_Is64bitOS ? 8 : 4
   WM_USER := 0x400
   TB_BUTTONCOUNT := WM_USER + 24
   TB_GETBUTTON := WM_USER + 23
   SizeOfTBBUTTON := 8 + PtrSize*3
   SizeOfTRAYDATA := 16 + PtrSize*2
   
   DHW_Prev := A_DetectHiddenWindows
   DetectHiddenWindows, On
   ControlGet, hTray, hwnd,, ToolbarWindow321, ahk_class Shell_TrayWnd
   ControlGet, hOverflow, hwnd,, ToolbarWindow321, ahk_class NotifyIconOverflowWindow
   WinGet, PID, PID, ahk_id %hTray%

   ; создаём буфер в адресном пространстве проводника для чтения данных
   RemoteBuff := New RemoteBuffer(PID, SizeOfTRAYDATA)   ;  вызов функции с присвоением переменной результата функции
   Dummy := []
   Loop 2
   {
      hwnd := A_Index = 1 ? hTray : hOverflow
      i := A_Index
      SendMessage, TB_BUTTONCOUNT,,,, ahk_id %hwnd%
      Loop % ErrorLevel
      {
         SendMessage, TB_GETBUTTON, A_Index - 1, RemoteBuff.ptr,, ahk_id %hwnd%
         ; получаем структуру TBBUTTON, в ней по смещению 8 + PtrSize адрес структуры TRAYDATA в адресном пространстве проводника
         pTBBUTTON := RemoteBuff.Read(SizeOfTBBUTTON)   ;  вызов функции с присвоением переменной результата функции
         
         ; получаем структуру TRAYDATA
         pTRAYDATA := RemoteBuff.Read(SizeOfTRAYDATA, NumGet(pTBBUTTON+0, 8 + PtrSize) - RemoteBuff.ptr)
         hWndIcon := NumGet(pTRAYDATA+0), uID := NumGet(pTRAYDATA + PtrSize, &quot;UInt&quot;)
         
         ; если окна не существует (процесс не существует) — заносим в массив
         if !WinExist(&quot;ahk_id&quot; hWndIcon)
            Dummy.Insert({hWnd: hWndIcon, uID: uID})   ;  вызов функции.
      }
   }
   DetectHiddenWindows, %DHW_Prev%
   for k, v in Dummy
      RemoveTrayIcon(v.hWnd, v.uID)   ;  вызов функции.
}

RemoveTrayIcon(hWnd, uID)   ;  сама функция. После знака &quot;{&quot; следует содержимое функции.
{
   VarSetCapacity(NOTIFYICONDATA, size := A_PtrSize = 8 ? 848 : A_IsUnicode? 828 : 444, 0)
   NumPut(size, NOTIFYICONDATA, &quot;UInt&quot;)
   NumPut(hWnd, NOTIFYICONDATA, A_PtrSize)
   NumPut(uID, NOTIFYICONDATA, 2*A_PtrSize)
   DllCall(&quot;shell32\Shell_NotifyIcon&quot;, &quot;UInt&quot;, NIM_DELETE := 2, Ptr, &amp;NOTIFYICONDATA)
   Return
}

Class RemoteBuffer   ;  класс. После знака &quot;{&quot; следует содержимое класса.
{
   __New(PID, size)
   {
      static PROCESS_VM_OPERATION := 0x8, PROCESS_VM_WRITE := 0x20, PROCESS_VM_READ := 0x10
         , MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x4
      
      if !(this.hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, Int, 0, UInt, PID, Ptr))
         Return &quot;&quot;
      
      if !(this.ptr := DllCall(&quot;VirtualAllocEx&quot;, UInt, this.hProc, UInt, 0, UInt, size, UInt, MEM_COMMIT, UInt, PAGE_READWRITE, Ptr))
         Return &quot;&quot;
      
      this.size := size
   }
   
   __Delete()
   {
      DllCall(&quot;VirtualFreeEx&quot;, Ptr, this.hProc, Ptr, this.ptr, UInt, 0, UInt, MEM_RELEASE := 0x8000)
      DllCall(&quot;CloseHandle&quot;, Ptr, this.hProc)
   }
   
   Read(size, offset = 0)
   {
      static LocalBuff
      VarSetCapacity(LocalBuff, size, 0)
      DllCall(&quot;ReadProcessMemory&quot;, Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, &amp;LocalBuff, UInt, size, UInt, 0)
      VarSetCapacity(LocalBuff, -1)
      Return &amp;LocalBuff
   }
   
   Write(pLocalBuff, size, offset = 0)
   {
      return DllCall(&quot;WriteProcessMemory&quot;, Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, pLocalBuff, UInt, size, UInt, 0)
   }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2014-07-27T13:25:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85293#p85293</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85291#p85291" />
			<content type="html"><![CDATA[<div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>DeleteDummyIcons()
{
/*
Недокументированная структура TRAYDATA
typedef TRAYDATA
{
IntPtr hwnd;
uint uID;
uint uCallbackMessage;
uint Reserved;
uint Reserved2;
IntPtr hIcon;
}
*/
   PtrSize := A_Is64bitOS ? 8 : 4
   WM_USER := 0x400
   TB_BUTTONCOUNT := WM_USER + 24
   TB_GETBUTTON := WM_USER + 23
   SizeOfTBBUTTON := 8 + PtrSize*3
   SizeOfTRAYDATA := 16 + PtrSize*2
   
   DHW_Prev := A_DetectHiddenWindows
   DetectHiddenWindows, On
   ControlGet, hTray, hwnd,, ToolbarWindow321, ahk_class Shell_TrayWnd
   ControlGet, hOverflow, hwnd,, ToolbarWindow321, ahk_class NotifyIconOverflowWindow
   WinGet, PID, PID, ahk_id %hTray%

   ; создаём буфер в адресном пространстве проводника для чтения данных
   RemoteBuff := New RemoteBuffer(PID, SizeOfTRAYDATA)
   Dummy := []
   Loop 2
   {
      hwnd := A_Index = 1 ? hTray : hOverflow
      i := A_Index
      SendMessage, TB_BUTTONCOUNT,,,, ahk_id %hwnd%
      Loop % ErrorLevel
      {
         SendMessage, TB_GETBUTTON, A_Index - 1, RemoteBuff.ptr,, ahk_id %hwnd%
         ; получаем структуру TBBUTTON, в ней по смещению 8 + PtrSize адрес структуры TRAYDATA в адресном пространстве проводника
         pTBBUTTON := RemoteBuff.Read(SizeOfTBBUTTON)
         
         ; получаем структуру TRAYDATA
         pTRAYDATA := RemoteBuff.Read(SizeOfTRAYDATA, NumGet(pTBBUTTON+0, 8 + PtrSize) - RemoteBuff.ptr)
         hWndIcon := NumGet(pTRAYDATA+0), uID := NumGet(pTRAYDATA + PtrSize, &quot;UInt&quot;)
         
         ; если окна не существует (процесс не существует) — заносим в массив
         if !WinExist(&quot;ahk_id&quot; hWndIcon)
            Dummy.Insert({hWnd: hWndIcon, uID: uID})
      }
   }
   DetectHiddenWindows, %DHW_Prev%
   for k, v in Dummy
      RemoveTrayIcon(v.hWnd, v.uID)
}

RemoveTrayIcon(hWnd, uID)
{
   VarSetCapacity(NOTIFYICONDATA, size := A_PtrSize = 8 ? 848 : A_IsUnicode? 828 : 444, 0)
   NumPut(size, NOTIFYICONDATA, &quot;UInt&quot;)
   NumPut(hWnd, NOTIFYICONDATA, A_PtrSize)
   NumPut(uID, NOTIFYICONDATA, 2*A_PtrSize)
   DllCall(&quot;shell32\Shell_NotifyIcon&quot;, &quot;UInt&quot;, NIM_DELETE := 2, Ptr, &amp;NOTIFYICONDATA)
   Return
}

Class RemoteBuffer
{
   __New(PID, size)
   {
      static PROCESS_VM_OPERATION := 0x8, PROCESS_VM_WRITE := 0x20, PROCESS_VM_READ := 0x10
         , MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x4
      
      if !(this.hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, Int, 0, UInt, PID, Ptr))
         Return &quot;&quot;
      
      if !(this.ptr := DllCall(&quot;VirtualAllocEx&quot;, UInt, this.hProc, UInt, 0, UInt, size, UInt, MEM_COMMIT, UInt, PAGE_READWRITE, Ptr))
         Return &quot;&quot;
      
      this.size := size
   }
   
   __Delete()
   {
      DllCall(&quot;VirtualFreeEx&quot;, Ptr, this.hProc, Ptr, this.ptr, UInt, 0, UInt, MEM_RELEASE := 0x8000)
      DllCall(&quot;CloseHandle&quot;, Ptr, this.hProc)
   }
   
   Read(size, offset = 0)
   {
      static LocalBuff
      VarSetCapacity(LocalBuff, size, 0)
      DllCall(&quot;ReadProcessMemory&quot;, Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, &amp;LocalBuff, UInt, size, UInt, 0)
      VarSetCapacity(LocalBuff, -1)
      Return &amp;LocalBuff
   }
   
   Write(pLocalBuff, size, offset = 0)
   {
      return DllCall(&quot;WriteProcessMemory&quot;, Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, pLocalBuff, UInt, size, UInt, 0)
   }
}</code></pre></div></div></div><p>Если я правильно понял из кода что написан выше, то при вызове этой функции в трее должны почиститься все неиспользуемые значки. В том числе из списка настроек трея при условии если это приложение не запущено.<br />Всё верно?</p>]]></content>
			<author>
				<name><![CDATA[Selja8]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32415</uri>
			</author>
			<updated>2014-07-27T12:31:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85291#p85291</id>
		</entry>
</feed>
