<?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=10255&amp;type=atom" />
	<updated>2015-02-26T12:57:36Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=10255</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91986#p91986" />
			<content type="html"><![CDATA[<p>Сегодня выдало ошибку - 0x80041002.<br /><a href="http://support.microsoft.com/kb/2465990/ru">http://support.microsoft.com/kb/2465990/ru</a></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-02-26T12:57:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91986#p91986</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90198#p90198" />
			<content type="html"><![CDATA[<p>Не уверен конечно на сто процентов, но, по-моему метод Terminate (как и команда Process, Close) убивает процесс без всяких условий, если есть права доступа и не зависла система. Можешь поэкспериментировать на всякий случай. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2015-01-08T14:00:42Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90198#p90198</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90197#p90197" />
			<content type="html"><![CDATA[<p>Ну например в текущий момент он не может быть завершен из-за драйвера например видеокарты, а через какое-то время драйвер дает добро на завершение. <br />Так вот интересно, нужно ли опять его завершать или достаточно просто подождать&nbsp; Process, WaitClose?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-01-08T13:53:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90197#p90197</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90196#p90196" />
			<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>2015-01-08T13:41:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90196#p90196</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90195#p90195" />
			<content type="html"><![CDATA[<p>А если процесс не закрылся с первого раза, то действительно долбать его не имеет смысла?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-01-08T13:34:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90195#p90195</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90192#p90192" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2015-01-08T13:18:13Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90192#p90192</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90191#p90191" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-01-08T12:13:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90191#p90191</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90190#p90190" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-01-08T11:55:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90190#p90190</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90189#p90189" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-01-08T11:43:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90189#p90189</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90188#p90188" />
			<content type="html"><![CDATA[<p>Ну, не знаю, мне мой вариант кажется более последовательным. Если процессов с одним именем много, логично к ним обращаться по PID. Если процесс не закрылся после однократного <em>Process, close</em>, не имеет смысла бомбить его этой командой далее.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2015-01-08T11:39:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90188#p90188</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90187#p90187" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-01-08T11:39:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90187#p90187</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90185#p90185" />
			<content type="html"><![CDATA[<p>Так и пускай обращается - нам же надо закрыть все процессы notepad.exe.<br />А таймер 10 секунд обнуляется в этой строчке:<br /></p><div class="codebox"><pre><code>   if (prev != ErrorLevel)
   {
      prev := ErrorLevel
      n := &quot;&quot;
   }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-01-08T11:29:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90185#p90185</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90184#p90184" />
			<content type="html"><![CDATA[<p>Не думаю, что так лучше.</p><div class="codebox"><pre><code>   Process, Close, %process%
   Process, Exist, %process%
   if !ErrorLevel
      break</code></pre></div><p>Вполне может оказаться, что в первой строчке код обращается к одному процессу, а во второй уже к другому, поэтому Errorlevel ни о чём не говорит.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2015-01-08T11:20:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90184#p90184</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90181#p90181" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-01-08T10:48:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90181#p90181</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не закрывает процесс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=90157#p90157" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2015-01-07T21:44:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=90157#p90157</id>
		</entry>
</feed>
