<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Убить ненужные процессы.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9837</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9837&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Убить ненужные процессы.».]]></description>
		<lastBuildDate>Mon, 28 Jul 2014 13:19:24 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85333#p85333</link>
			<description><![CDATA[<p>В коде была ошибка. Вместо (ctrl+f5) было (alt+f5).<br />В шапке исправил.</p>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Mon, 28 Jul 2014 13:19:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85333#p85333</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85328#p85328</link>
			<description><![CDATA[<p>У меня на ноутбуке почему-то не работает - Windows 7 Домашняя расширенная. В смысле процессы не убиваются.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Mon, 28 Jul 2014 12:24:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85328#p85328</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85312#p85312</link>
			<description><![CDATA[<p>Спасибо, вроде разобрался.</p>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Mon, 28 Jul 2014 06:59:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85312#p85312</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85308#p85308</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 28 Jul 2014 05:50:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85308#p85308</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85304#p85304</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Mon, 28 Jul 2014 03:55:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85304#p85304</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85303#p85303</link>
			<description><![CDATA[<p>OFF: <img src="//forum.script-coding.com/img/smilies/lol.png" width="15" height="15" /><br />Извините не удержался.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Mon, 28 Jul 2014 03:49:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85303#p85303</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85301#p85301</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Со стереоэффектами всё работает.</p></blockquote></div><div class="quotebox"><blockquote><p>После удаления этих ключей очищается вся информация о ярлыках трея и их настроек.</p></blockquote></div><p><strong>Selja8</strong> Это конечно очень радует, особенно наличие смайликов, но нам то, простым смертным как это понимать? Как божью благодать, или проклятье дьявола? Или Вам просто так хорошо, что нам и понимать ничего не надо.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 27 Jul 2014 18:50:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85301#p85301</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85300#p85300</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Sun, 27 Jul 2014 16:23:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85300#p85300</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85299#p85299</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>вот я и думаю, что не так.</p></blockquote></div><p>Да, действительно не очевидно. Надо написать автору функции, чтобы добавил свето-звуковых эффектов при срабатывании, а то как то неинтересно получается.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 27 Jul 2014 15:25:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85299#p85299</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85298#p85298</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sun, 27 Jul 2014 15:05:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85298#p85298</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85297#p85297</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Как то это очень странно, ещё вчера было понятно,<br />а теперь внезапно непонятно.</p></blockquote></div><p>Так не заработало же, вот я и думаю, что не так.</p>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Sun, 27 Jul 2014 14:52:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85297#p85297</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85296#p85296</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Sun, 27 Jul 2014 14:48:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85296#p85296</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85295#p85295</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 27 Jul 2014 14:10:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85295#p85295</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85293#p85293</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sun, 27 Jul 2014 13:25:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85293#p85293</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Убить ненужные процессы.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85291#p85291</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Selja8)]]></author>
			<pubDate>Sun, 27 Jul 2014 12:31:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85291#p85291</guid>
		</item>
	</channel>
</rss>
