<?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="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12284&amp;type=atom" />
	<updated>2017-01-08T21:02:04Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=12284</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110722#p110722" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-08T21:02:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110722#p110722</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110718#p110718" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-08T19:35:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110718#p110718</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110716#p110716" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-08T19:12:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110716#p110716</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110714#p110714" />
			<content type="html"><![CDATA[<p>Также.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-01-08T19:10:07Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110714#p110714</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110713#p110713" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-01-08T19:07:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110713#p110713</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110708#p110708" />
			<content type="html"><![CDATA[<p>Только что специально в XP x86 перезагрузился, попробовал — всё работает, так что не знаю, в чём проблема. Проверяй версию AHK.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-08T18:38:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110708#p110708</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110705#p110705" />
			<content type="html"><![CDATA[<p>Вот я про неё как раз.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-01-08T18:19:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110705#p110705</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110704#p110704" />
			<content type="html"><![CDATA[<p>У меня оба срабатывают. А какая ОС?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-08T18:01:50Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110704#p110704</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110703#p110703" />
			<content type="html"><![CDATA[<p>На 32-бит оба не срабатывают.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-01-08T17:57:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110703#p110703</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110680#p110680" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-07T23:51:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110680#p110680</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110662#p110662" />
			<content type="html"><![CDATA[<p>Поспешил с выводами. Ладно, пойдёт.</p><p>Но с #SingleInstance, Force было бы лучше.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-01-06T17:21:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110662#p110662</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110661#p110661" />
			<content type="html"><![CDATA[<p>Который? У меня всё вроде на месте. В цикле столько итераций, сколько есть окон с путём скрипта в заголовке.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-06T17:06:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110661#p110661</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110660#p110660" />
			<content type="html"><![CDATA[<p>А как же Return?</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-01-06T17:01:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110660#p110660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110659#p110659" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p> постоянно будет крутиться функция с циклом поиска окон</p></blockquote></div><p>А с чего ей постоянно крутиться? Поиск окон идёт только один раз при запуске.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-01-06T16:59:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110659#p110659</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Самозакрытие при повторном запуске]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110658#p110658" />
			<content type="html"><![CDATA[<p>Не, народ, мне нужно что-то полегче для процессорной накачки. Иконки в трее можно опустить, их скорее не будет.<br />Не нравится, что в скриптах, где, скажем, выполняется быстрый хоткей постоянно будет крутиться функция с циклом поиска окон, почему я и хочу проверять по A_ExitReason или какому-то иному событию.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-01-06T16:46:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110658#p110658</id>
		</entry>
</feed>
