<?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>http://forum.script-coding.com/viewtopic.php?id=12284</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12284&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Самозакрытие при повторном запуске».]]></description>
		<lastBuildDate>Sun, 08 Jan 2017 21:02:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110722#p110722</link>
			<description><![CDATA[<p>И ещё немного, получше разобравшись в теме:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance, force
OnExit(Func(&quot;Exit&quot;))
Return

Exit(ExitReason)  {
   if ExitReason not in Single,Reload
      Return
   
   MyPID := DllCall(&quot;GetCurrentProcessId&quot;)
   VarSetCapacity(buff, buffSize := 4096, 0)
   DllCall(&quot;Psapi\EnumProcesses&quot;, Ptr, &amp;buff, UInt, buffSize, UIntP, bytes)
   Loop % bytes//4  {
      PID := NumGet(buff, A_Index * 4, &quot;UInt&quot;)
      if (MyPID != PID &amp;&amp; InStr(GetCommandLine(PID), A_ScriptFullPath))
         Process, Close, % PID
   }
}

GetCommandLine(PID)  {
   static PROCESS_QUERY_INFORMATION := 0x400, PROCESS_VM_READ := 0x10, STATUS_SUCCESS := 0
   
   VarSetCapacity(PBI, 48)
   hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, Int, 0, UInt, PID, Ptr)

   (A_Is64bitOS &amp;&amp; DllCall(&quot;IsWow64Process&quot;, Ptr, hProc, UIntP, IsWow64))
   if (!A_Is64bitOS || IsWow64)
      PtrSize := 4, szPtr := &quot;UInt&quot;, pPtr := &quot;UIntP&quot;, offsetCMD := 0x44
   else
      PtrSize := 8, szPtr := &quot;Int64&quot;, pPtr := &quot;Int64P&quot;, offsetCMD := 0x78

   if (A_PtrSize &lt; PtrSize)  {    ; скрипт 32, процесс 64
      QueryInformationProcess := &quot;Ntdll\NtWow64QueryInformationProcess64&quot;
      ReadProcessMemory := &quot;Ntdll\NtWow64ReadVirtualMemory64&quot;
      info := 0, szPBI := 48, offsetPEB := 8
   }
   else  {
      QueryInformationProcess := &quot;Ntdll\NtQueryInformationProcess&quot;
      ReadProcessMemory := &quot;ReadProcessMemory&quot;
      if (A_PtrSize &gt; PtrSize)    ; скрипт 64, процесс 32
         info := 26, szPBI := 8, offsetPEB := 0
      else
         info := 0, szPBI := PtrSize * 6, offsetPEB := PtrSize
   }
   if DllCall(QueryInformationProcess, Ptr, hProc, UInt, info, Ptr, &amp;PBI, UInt, szPBI, UIntP, bytes) != STATUS_SUCCESS  {
      DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
      Return
   }
   pPEB := NumGet(&amp;PBI + offsetPEB, szPtr)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pPEB + PtrSize * 4, pPtr, pRUPP, szPtr, PtrSize, UIntP, bytes)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pRUPP + offsetCMD, pPtr, pCMD, szPtr, PtrSize, UIntP, bytes)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pRUPP + offsetCMD - PtrSize, UShortP, szCMD, szPtr, 2, UIntP, bytes)
   
   VarSetCapacity(buff, szCMD, 0)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pCMD, Ptr, &amp;buff, szPtr, szCMD, UIntP, bytes)
   DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
   Return StrGet(&amp;buff, &quot;UTF-16&quot;)
}</code></pre></div><p>Нужно понимать, что в таком виде функция EnumProcesses перечисляет не все процессы, а QueryInformationProcess выдаёт информацию только о процессах, запущенных от имени пользователя. Для получения командной строки AHK-скриптов это не важно, а для получения информации обо всех процессах нужно добавить</p><div class="codebox"><pre><code>SeDebugPrivilege()

SeDebugPrivilege()  {
   static PROCESS_QUERY_INFORMATION := 0x400, TOKEN_ADJUST_PRIVILEGES := 0x20, SE_PRIVILEGE_ENABLED := 0x2
   
   hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_QUERY_INFORMATION, Int, false, UInt, DllCall(&quot;GetCurrentProcessId&quot;), Ptr)
   DllCall(&quot;Advapi32\OpenProcessToken&quot;, Ptr, hProc, UInt, TOKEN_ADJUST_PRIVILEGES, PtrP, token)
   
   VarSetCapacity(TOKEN_PRIVILEGES, 16, 0)
   NumPut(1, TOKEN_PRIVILEGES, 0, &quot;UInt&quot;)
   DllCall(&quot;Advapi32\LookupPrivilegeValue&quot;, Ptr, 0, Str, &quot;SeDebugPrivilege&quot;, Int64P, luid)
   NumPut(luid, TOKEN_PRIVILEGES, 4, &quot;Int64&quot;)
   NumPut(SE_PRIVILEGE_ENABLED, TOKEN_PRIVILEGES, 12, &quot;UInt&quot;)
   DllCall(&quot;Advapi32\AdjustTokenPrivileges&quot;, Ptr, token, Int, false, Ptr, &amp;TOKEN_PRIVILEGES, UInt, 0, Ptr, 0, Ptr, 0)
   
   DllCall(&quot;CloseHandle&quot;, Ptr, token)
   DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 08 Jan 2017 21:02:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110722#p110722</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110718#p110718</link>
			<description><![CDATA[<p>Ещё немного подправил размерность <a href="https://autohotkey.com/docs/commands/DllCall.htm#unsigned">в связи с</a><br /></p><div class="quotebox"><blockquote><p>Unsigned 64-bit integers produced by a function are not supported.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 08 Jan 2017 19:35:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110718#p110718</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110716#p110716</link>
			<description><![CDATA[<p>Подправленный второй вариант:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance, force
OnExit(Func(&quot;Exit&quot;))
Return

Exit(ExitReason)  {
   if ExitReason not in Single,Reload
      Return
   
   MyPID := DllCall(&quot;GetCurrentProcessId&quot;)
   VarSetCapacity(buff, buffSize := 4096, 0)
   DllCall(&quot;Psapi\EnumProcesses&quot;, Ptr, &amp;buff, UInt, buffSize, UIntP, bytes)
   Loop % bytes//4  {
      PID := NumGet(buff, A_Index * 4, &quot;UInt&quot;)
      if (MyPID != PID &amp;&amp; InStr(GetCommandLine(PID), A_ScriptFullPath))
         Process, Close, % PID
   }
}

GetCommandLine(PID)  {
   static PROCESS_QUERY_INFORMATION := 0x400, PROCESS_VM_READ := 0x10
   
   VarSetCapacity(PBI, 48)
   hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, Int, 0, UInt, PID, Ptr)

   (A_Is64bitOS &amp;&amp; DllCall(&quot;IsWow64Process&quot;, Ptr, hProc, UIntP, IsWow64))
   if (!A_Is64bitOS || IsWow64)
      PtrSize := 4, szPtr := &quot;UInt&quot;, pPtr := &quot;UIntP&quot;, offsetCMD := 0x44
   else
      PtrSize := 8, szPtr := &quot;Int64&quot;, pPtr := &quot;Int64P&quot;, offsetCMD := 0x78

   if (A_PtrSize &lt; PtrSize)  {    ; скрипт 32, процесс 64
      QueryInformationProcess := &quot;Ntdll\NtWow64QueryInformationProcess64&quot;
      ReadProcessMemory := &quot;Ntdll\NtWow64ReadVirtualMemory64&quot;
      info := 0, szPBI := 48, offsetPEB := 8
   }
   else  {
      QueryInformationProcess := &quot;Ntdll\NtQueryInformationProcess&quot;
      ReadProcessMemory := &quot;ReadProcessMemory&quot;
      if (A_PtrSize &gt; PtrSize)    ; скрипт 64, процесс 32
         info := 26, szPBI := 8, offsetPEB := 0
      else
         info := 0, szPBI := PtrSize * 6, offsetPEB := PtrSize
   }
   DllCall(QueryInformationProcess, Ptr, hProc, UInt, info, Ptr, &amp;PBI, UInt, szPBI, pPtr, bytes)
   pPEB := NumGet(&amp;PBI + offsetPEB, szPtr)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pPEB + PtrSize * 4, pPtr, pRUPP, szPtr, PtrSize, pPtr, bytes)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pRUPP + offsetCMD, pPtr, pCMD, szPtr, PtrSize, pPtr, bytes)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pRUPP + offsetCMD - PtrSize, UShortP, szCMD, szPtr, 2, pPtr, bytes)
   
   VarSetCapacity(buff, szCMD, 0)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pCMD, Ptr, &amp;buff, szPtr, szCMD, pPtr, bytes)
   DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
   Return StrGet(&amp;buff, &quot;UTF-16&quot;)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 08 Jan 2017 19:12:02 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110716#p110716</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110714#p110714</link>
			<description><![CDATA[<p>Также.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 08 Jan 2017 19:10:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110714#p110714</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110713#p110713</link>
			<description><![CDATA[<p>Win 7 SP1 Max x86, AutoHotkey<span style="color: green">(A|U)</span>32.exe 1.1.24.04.<br />Процесс остаётся на месте. После второго вызова часто выскакивает окно:<br /></p><div class="quotebox"><blockquote><p>[Window Title]<br />AutoHotkey Unicode 32-bit</p><p>[Main Instruction]<br />Прекращена работа программы &quot;AutoHotkey Unicode 32-bit&quot;</p><p>[Content]<br />Возникшая проблема привела к прекращению работы программы. Закройте эту программу.</p><p>[Закрыть программу]</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 08 Jan 2017 19:07:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110713#p110713</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110708#p110708</link>
			<description><![CDATA[<p>Только что специально в XP x86 перезагрузился, попробовал — всё работает, так что не знаю, в чём проблема. Проверяй версию AHK.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 08 Jan 2017 18:38:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110708#p110708</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110705#p110705</link>
			<description><![CDATA[<p>Вот я про неё как раз.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 08 Jan 2017 18:19:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110705#p110705</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110704#p110704</link>
			<description><![CDATA[<p>У меня оба срабатывают. А какая ОС?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 08 Jan 2017 18:01:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110704#p110704</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110703#p110703</link>
			<description><![CDATA[<p>На 32-бит оба не срабатывают.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 08 Jan 2017 17:57:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110703#p110703</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110680#p110680</link>
			<description><![CDATA[<p>Если без WMI, то так можно:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance, force
OnExit(Func(&quot;Exit&quot;))
Return

Exit(ExitReason)  {
   if ExitReason not in Single,Reload
      Return
   
   MyPID := DllCall(&quot;GetCurrentProcessId&quot;)
   VarSetCapacity(buff, buffSize := 4096, 0)
   DllCall(&quot;Psapi\EnumProcesses&quot;, Ptr, &amp;buff, UInt, buffSize, UIntP, bytes)
   Loop % bytes//4  {
      PID := NumGet(buff, A_Index * 4, &quot;UInt&quot;)
      if (MyPID != PID &amp;&amp; InStr(GetCommandLine(PID), A_ScriptFullPath))
         Process, Close, % PID
   }
}

GetCommandLine(PID)  {
   static SYNCHRONIZE := 0x100000, STANDARD_RIGHTS_REQUIRED := 0xF0000, offsetSize := A_IsUnicode ? 2 : 1
        , PROCESS_ALL_ACCESS := STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF, INFINITE := 0xFFFFFFFF
        
   hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_ALL_ACCESS, Int, 0, UInt, PID, Ptr)
   if A_Is64bitOS  {
      DllCall(&quot;IsWow64Process&quot;, Ptr, hProc, UIntP, bool)
      if (bool &amp;&amp; A_PtrSize = 8) || (!bool &amp;&amp; A_PtrSize = 4)  {
         DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
         ; MsgBox, Скрипт и целевой процесс разных битностей, функция не будет работать!
         Return
      }
   }
   hModule := DllCall(&quot;GetModuleHandle&quot;, &quot;str&quot;, &quot;Kernel32.dll&quot;, Ptr)
   pFunc := DllCall(&quot;GetProcAddress&quot;, Ptr, hModule, AStr, &quot;GetCommandLine&quot; . (A_IsUnicode ? &quot;W&quot; : &quot;A&quot;), Ptr)
   if !hThrd := DllCall(&quot;CreateRemoteThread&quot;, Ptr, hProc, Ptr, 0, Ptr, 0, Ptr, pFunc, Ptr, 0, UInt, 0, UInt, 0)  {
      DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
      Return
   }
   DllCall(&quot;WaitForSingleObject&quot;, Ptr, hThrd, UInt, INFINITE)
   DllCall(&quot;GetExitCodeThread&quot;, Ptr, hThrd, UIntP, pPtr)
   DllCall(&quot;CloseHandle&quot;, Ptr, hThrd)

   VarSetCapacity(buff, 2048, 0)
   Loop  {
      offset := (A_Index - 1) * offsetSize
      DllCall(&quot;ReadProcessMemory&quot;, Ptr, hProc, Ptr, pPtr + offset, Ptr, &amp;buff + offset, Ptr, offsetSize, Ptr, 0)
   } until !NumGet(&amp;buff + offset, A_IsUnicode ? &quot;UShort&quot; : &quot;UChar&quot;)

   DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
   Return StrGet(&amp;buff)
}</code></pre></div><p>Или так:</p><div class="codebox"><pre><code>#Persistent
#SingleInstance, force
OnExit(Func(&quot;Exit&quot;))
Return

Exit(ExitReason)  {
   if ExitReason not in Single,Reload
      Return
   
   MyPID := DllCall(&quot;GetCurrentProcessId&quot;)
   VarSetCapacity(buff, buffSize := 4096, 0)
   DllCall(&quot;Psapi\EnumProcesses&quot;, Ptr, &amp;buff, UInt, buffSize, UIntP, bytes)
   Loop % bytes//4  {
      PID := NumGet(buff, A_Index * 4, &quot;UInt&quot;)
      if (MyPID != PID &amp;&amp; InStr(GetCommandLine(PID), A_ScriptFullPath))
         Process, Close, % PID
   }
}

GetCommandLine(PID)  {
   static PROCESS_QUERY_INFORMATION := 0x400, PROCESS_VM_READ := 0x10
   
   VarSetCapacity(PBI, 48)
   hProc := DllCall(&quot;OpenProcess&quot;, UInt, PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, Int, 0, UInt, PID, Ptr)

   (A_Is64bitOS &amp;&amp; DllCall(&quot;IsWow64Process&quot;, Ptr, hProc, UIntP, IsWow64))
   if (!A_Is64bitOS || IsWow64)
      PtrSize := 4, szPtr := &quot;UInt&quot;, pPtr := &quot;UIntP&quot;, offsetCMD := 0x44
   else
      PtrSize := 8, szPtr := &quot;UInt64&quot;, pPtr := &quot;UInt64P&quot;, offsetCMD := 0x78

   if (A_PtrSize &lt; PtrSize)  {    ; скрипт 32, процесс 64
      QueryInformationProcess := &quot;Ntdll\NtWow64QueryInformationProcess64&quot;
      ReadProcessMemory := &quot;Ntdll\NtWow64ReadVirtualMemory64&quot;
      info := 0, szPBI := 48, offsetPEB := 8
   }
   else  {
      QueryInformationProcess := &quot;Ntdll\NtQueryInformationProcess&quot;
      ReadProcessMemory := &quot;ReadProcessMemory&quot;
      if (A_PtrSize &gt; PtrSize)    ; скрипт 64, процесс 32
         info := 26, szPBI := 8, offsetPEB := 0
      else
         info := 0, szPBI := PtrSize * 6, OffsetPEB := PtrSize
   }
   DllCall(QueryInformationProcess, Ptr, hProc, UInt, info, Ptr, &amp;PBI, UInt, szPBI, pPtr, bytes)
   pPEB := NumGet(&amp;PBI + OffsetPEB, szPtr)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pPEB + PtrSize * 4, pPtr, pRUPP, szPtr, PtrSize, pPtr, bytes)
   DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pRUPP + offsetCMD, pPtr, pCMD, szPtr, PtrSize, pPtr, bytes)

   VarSetCapacity(buff, 1024, 0)
   Loop  {
      offset := (A_Index - 1) * 2
      DllCall(ReadProcessMemory, Ptr, hProc, szPtr, pCMD + offset, Ptr, &amp;buff + offset, szPtr, 2, pPtr, bytes)
   } until !NumGet(&amp;buff + offset, &quot;UShort&quot;)

   DllCall(&quot;CloseHandle&quot;, Ptr, hProc)
   Return StrGet(&amp;buff, &quot;UTF-16&quot;)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 07 Jan 2017 23:51:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110680#p110680</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110662#p110662</link>
			<description><![CDATA[<p>Поспешил с выводами. Ладно, пойдёт.</p><p>Но с #SingleInstance, Force было бы лучше.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 06 Jan 2017 17:21:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110662#p110662</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110661#p110661</link>
			<description><![CDATA[<p>Который? У меня всё вроде на месте. В цикле столько итераций, сколько есть окон с путём скрипта в заголовке.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 06 Jan 2017 17:06:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110661#p110661</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110660#p110660</link>
			<description><![CDATA[<p>А как же Return?</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 06 Jan 2017 17:01:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110660#p110660</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110659#p110659</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p> постоянно будет крутиться функция с циклом поиска окон</p></blockquote></div><p>А с чего ей постоянно крутиться? Поиск окон идёт только один раз при запуске.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 06 Jan 2017 16:59:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110659#p110659</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=110658#p110658</link>
			<description><![CDATA[<p>Не, народ, мне нужно что-то полегче для процессорной накачки. Иконки в трее можно опустить, их скорее не будет.<br />Не нравится, что в скриптах, где, скажем, выполняется быстрый хоткей постоянно будет крутиться функция с циклом поиска окон, почему я и хочу проверять по A_ExitReason или какому-то иному событию.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 06 Jan 2017 16:46:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=110658#p110658</guid>
		</item>
	</channel>
</rss>
