<?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=10255</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10255&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Не закрывает процесс».]]></description>
		<lastBuildDate>Thu, 26 Feb 2015 12:57:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=91986#p91986</link>
			<description><![CDATA[<p>Сегодня выдало ошибку - 0x80041002.<br /><a href="http://support.microsoft.com/kb/2465990/ru">http://support.microsoft.com/kb/2465990/ru</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 26 Feb 2015 12:57:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=91986#p91986</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90198#p90198</link>
			<description><![CDATA[<p>Не уверен конечно на сто процентов, но, по-моему метод Terminate (как и команда Process, Close) убивает процесс без всяких условий, если есть права доступа и не зависла система. Можешь поэкспериментировать на всякий случай. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 08 Jan 2015 14:00:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90198#p90198</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90197#p90197</link>
			<description><![CDATA[<p>Ну например в текущий момент он не может быть завершен из-за драйвера например видеокарты, а через какое-то время драйвер дает добро на завершение. <br />Так вот интересно, нужно ли опять его завершать или достаточно просто подождать&nbsp; Process, WaitClose?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 08 Jan 2015 13:53:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90197#p90197</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90196#p90196</link>
			<description><![CDATA[<p>Просто не вижу причины, почему процесс должен закрыться после второй попытки, если не закрылся после первой.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 08 Jan 2015 13:41:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90196#p90196</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90195#p90195</link>
			<description><![CDATA[<p>А если процесс не закрылся с первого раза, то действительно долбать его не имеет смысла?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 08 Jan 2015 13:34:21 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90195#p90195</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90192#p90192</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Непонятен фрагмент:</p></blockquote></div><p>Согласен, это я не подумав из предыдущего варианта скопировал. Ещё логичнее так:<br /></p><div class="codebox"><pre><code>MyPpoc := &quot;notepad.exe&quot;
Loop 10
   Run, % MyPpoc

oProcesses := []
for process in ComObjGet(&quot;winmgmts:&quot;).InstancesOf(&quot;Win32_Process where Name=&#039;&quot; . MyPpoc . &quot;&#039;&quot;)
   oProcesses[A_Index] := process.ProcessId, process.Terminate

for k, PID in oProcesses
   Process, WaitClose, %PID%, 10
until ErrorLevel &amp;&amp; NotAllClosed := 1

if NotAllClosed
{
   for k, PID in oProcesses
   {
      Process, Exist, %PID%
      if ErrorLevel
         NotClosed .= (A_Index = 1 ? &quot;&quot; : &quot;, &quot;) . PID
   }
   MsgBox, Не удалось завершить процессы %NotClosed%
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 08 Jan 2015 13:18:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90192#p90192</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90191#p90191</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Если процесс не закрылся после однократного Process, close, не имеет смысла бомбить его этой командой далее.</p></blockquote></div><p>Если действительно нет смысла, то я бы так написал:<br /></p><div class="codebox"><pre><code>
process := &quot;notepad.exe&quot; 

Loop 10
    run %process%
    
For Proc In ComObjGet(&quot;winmgmts:&quot;).ExecQuery(&quot;Select * from Win32_Process where Name=&#039;&quot; process &quot;&#039;&quot;)
{ 
    Process, Close, % Pid := Proc.ProcessId
    Process, WaitClose, %Pid%, 10 
    If ErrorLevel 
        MsgBox, Не удалось завершить процесс: %process%, пид: %Pid% за 10 секунд 
}
MsgBox, Все процессы: %process% завершены.
</code></pre></div><p>Непонятен фрагмент:<br /></p><div class="codebox"><pre><code>   Loop
      Process, WaitClose, %PID%, 1
   until !ErrorLevel || A_Index = 10
   if ErrorLevel</code></pre></div><p>есть отличия от:</p><div class="codebox"><pre><code>    Process, WaitClose, %Pid%, 10 
    If ErrorLevel </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 08 Jan 2015 12:13:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90191#p90191</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90190#p90190</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Они же в одном цикле находятся.</p></blockquote></div><p>Мда, это я Break с Continue подсознательно попутал :LOL:. Праздники.</p><p>Думаю такой вариант проще:<br /></p><div class="codebox"><pre><code>process := &quot;notepad.exe&quot; 

Loop 10
    run %process%

Loop
{
   Process, Exist, %process%
   Process, Close, % Pid := ErrorLevel
   Process, WaitClose, %PID%, 10 
   If ErrorLevel 
        MsgBox, Не удалось завершить процесс: %process%, пид: %PID% за 10 секунд 
} Until !Pid

MsgBox, Все процессы: %process% завершены.</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 08 Jan 2015 11:55:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90190#p90190</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90189#p90189</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Если процесс не закрывается, то у тебя тут вечный цикл, и сюда:</p><p>&nbsp; &nbsp;if (prev != ErrorLevel)<br />&nbsp; &nbsp;{<br />&nbsp; &nbsp; &nbsp; prev := ErrorLevel<br />&nbsp; &nbsp; &nbsp; n := &quot;&quot;<br />&nbsp; &nbsp;}</p><p>выполнение не дойдёт.</p></blockquote></div><p>Как это не дойдет?<br />Они же в одном цикле находятся.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 08 Jan 2015 11:43:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90189#p90189</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90188#p90188</link>
			<description><![CDATA[<p>Ну, не знаю, мне мой вариант кажется более последовательным. Если процессов с одним именем много, логично к ним обращаться по PID. Если процесс не закрылся после однократного <em>Process, close</em>, не имеет смысла бомбить его этой командой далее.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 08 Jan 2015 11:39:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90188#p90188</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90187#p90187</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Этот подход правильный?</p></blockquote></div><p>Если несколько, то нет. Надо обращатся к идентификатору процесса, а не к его имени. <br /></p><div class="quotebox"><blockquote><p>А таймер 10 секунд обнуляется в этой строчке:</p></blockquote></div><div class="codebox"><pre><code>   Process, Close, %process%
   Process, Exist, %process%
   if !ErrorLevel
      break</code></pre></div><p>Если процесс не закрывается, то у тебя тут вечный цикл, и сюда:</p><div class="codebox"><pre><code>   if (prev != ErrorLevel)
   {
      prev := ErrorLevel
      n := &quot;&quot;
   }</code></pre></div><p>выполнение не дойдёт.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 08 Jan 2015 11:39:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90187#p90187</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90185#p90185</link>
			<description><![CDATA[<p>Так и пускай обращается - нам же надо закрыть все процессы notepad.exe.<br />А таймер 10 секунд обнуляется в этой строчке:<br /></p><div class="codebox"><pre><code>   if (prev != ErrorLevel)
   {
      prev := ErrorLevel
      n := &quot;&quot;
   }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 08 Jan 2015 11:29:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90185#p90185</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90184#p90184</link>
			<description><![CDATA[<p>Не думаю, что так лучше.</p><div class="codebox"><pre><code>   Process, Close, %process%
   Process, Exist, %process%
   if !ErrorLevel
      break</code></pre></div><p>Вполне может оказаться, что в первой строчке код обращается к одному процессу, а во второй уже к другому, поэтому Errorlevel ни о чём не говорит.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 08 Jan 2015 11:20:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90184#p90184</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90181#p90181</link>
			<description><![CDATA[<p>А я не знаю сколько их может быть.<br />И разве из-за несовсем неправильного подхода может код не срабатывать?<br />Этот подход правильный?<br /></p><div class="codebox"><pre><code>process := &quot;notepad.exe&quot;
n := prev := ErrorLevel := &quot;&quot;
Loop
{
   Process, Close, %process%
   Process, Exist, %process%
   if !ErrorLevel
      break
   if n = 100
      MsgBox, Не удалось завершить процесс %process% за 10 секунд
   sleep 100
   n++
   if (prev != ErrorLevel)
   {
      prev := ErrorLevel
      n := &quot;&quot;
   }
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 08 Jan 2015 10:48:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90181#p90181</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=90157#p90157</link>
			<description><![CDATA[<p>Нет, *32 — это не часть имени процесса, это просто метка.<br />Вообще-то, сам подход не совсем верный. Если процесс один, правильнее так:<br /></p><div class="codebox"><pre><code>Process, Close, WerFault.exe
Loop
   Process, WaitClose, WerFault.exe, 1
until !ErrorLevel || A_Index = 10
if ErrorLevel
   MsgBox, Не удалось завершить процесс WerFault.exe за 10 секунд</code></pre></div><p>Если несколько, так:<br /></p><div class="codebox"><pre><code>oProcesses := []
for process in ComObjGet(&quot;winmgmts:&quot;).InstancesOf(&quot;Win32_Process where Name=&#039;WerFault.exe&#039;&quot;)
   oProcesses[A_Index] := process.ProcessId

for k, PID in oProcesses
{
   Process, Close, %PID%
   Loop
      Process, WaitClose, %PID%, 1
   until !ErrorLevel || A_Index = 10
   if ErrorLevel
      MsgBox, Не удалось завершить процесс %PID% за 10 секунд
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 07 Jan 2015 21:44:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=90157#p90157</guid>
		</item>
	</channel>
</rss>
