<?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=11846</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11846&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Закрытие устаревших дочерних процессов».]]></description>
		<lastBuildDate>Tue, 13 Sep 2016 14:56:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107649#p107649</link>
			<description><![CDATA[<p><strong>Alectric</strong>, нет, он создаётся только однократно при старте. Правда, может это у меня в системе что-то с WMI.</p>]]></description>
			<author><![CDATA[null@example.com (Drugoy)]]></author>
			<pubDate>Tue, 13 Sep 2016 14:56:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107649#p107649</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107647#p107647</link>
			<description><![CDATA[<p>Возможно объект создается бесконечное количество раз, без &quot;отпускания&quot; (ObjRelease) старого объекта.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Tue, 13 Sep 2016 14:07:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107647#p107647</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107646#p107646</link>
			<description><![CDATA[<p>Не знаю у одного ли меня такое, но из-за скрипта с<br /></p><div class="codebox"><pre><code>oSvc := ComObjGet(&quot;winmgmts:&quot;) 
ComObjConnect(createSink := ComObjCreate(&quot;WbemScripting.SWbemSink&quot;), &quot;ProcessCreate_&quot;)
ComObjConnect(deleteSink := ComObjCreate(&quot;WbemScripting.SWbemSink&quot;), &quot;ProcessDelete_&quot;)
Command := &quot;WITHIN 0.5 WHERE TargetInstance ISA &#039;Win32_Process&#039;&quot;
oSvc.ExecNotificationQueryAsync(createSink, &quot;SELECT * FROM __InstanceCreationEvent &quot; Command)
oSvc.ExecNotificationQueryAsync(deleteSink, &quot;SELECT * FROM __InstanceDeletionEvent &quot; Command)</code></pre></div><p>Появляется такая особенность, что PIDы процессов перестают ре-использоваться и начинают расти как на дрожжах: после всего пары дней аптайма системы PIDы становятся по 40000-60000, а если аптайм неделя или больше, то значения PIDов доходят до миллионов и выше.</p>]]></description>
			<author><![CDATA[null@example.com (Drugoy)]]></author>
			<pubDate>Tue, 13 Sep 2016 14:04:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107646#p107646</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=106323#p106323</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong> Воу. Это то что нужно. Причем и работает на ура.<br />Сейчас читаю эту конструкцию и понимаю, что я многое упустил за эти годы и AHK ушла далеко в перед.</p>]]></description>
			<author><![CDATA[null@example.com (DaVinchi)]]></author>
			<pubDate>Sun, 24 Jul 2016 12:27:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=106323#p106323</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=106321#p106321</link>
			<description><![CDATA[<p>При запуске CefSharp.BrowserSubprocess.exe закрываем остальные CefSharp.BrowserSubprocess.exe с таким же родительским процессом.</p><div class="codebox"><pre><code>#SingleInstance Force
#Persistent
#NoEnv 
SetBatchLines -1 

oSvc := ComObjGet(&quot;winmgmts:&quot;) 
ComObjConnect(createSink := ComObjCreate(&quot;WbemScripting.SWbemSink&quot;), &quot;ProcessCreate_&quot;)

Command := &quot;Within 0.1 Where TargetInstance ISA &#039;Win32_Process&#039;&quot;
oSvc.ExecNotificationQueryAsync(createSink, &quot;select * from __InstanceCreationEvent &quot; Command)
Return

ProcessCreate_OnObjectReady(obj) {
	Process := obj.TargetInstance
	If (Process.Name != &quot;CefSharp.BrowserSubprocess.exe&quot;)
		Return
	Query := &quot;SELECT * FROM Win32_Process WHERE Name = &#039;CefSharp.BrowserSubprocess.exe&#039; AND ParentProcessID = &quot;
		. Process.ParentProcessID &quot; AND ProcessID != &quot; Process.ProcessID 
	For Proc In ComObjGet(&quot;winmgmts:&quot;).ExecQuery(Query) 
		Proc.Terminate()
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 24 Jul 2016 11:23:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=106321#p106321</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=106319#p106319</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong> Не, эт не то. Ведь Krutube.exe продолжает работать.<br />Суть программы такова: Krutub.exe является как бы оболочкой с настройкой. Внеся все нужные настройки в этой программе, нажимаем пуск и с учетом настроек начинает открываться CefSharp.BrowserSubprocess.exe. Вот он открывался, выполнил свою задачу и закрывается. Krutube.exe открывает новый CefSharp.BrowserSubprocess.exe и так по кругу. По идее старый субпроцесс должен был закрыться, он не закрывается и висит в процессах, кушая память.</p>]]></description>
			<author><![CDATA[null@example.com (DaVinchi)]]></author>
			<pubDate>Sun, 24 Jul 2016 11:14:21 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=106319#p106319</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=106318#p106318</link>
			<description><![CDATA[<p>Теоретически как то так. При закрытии Krutub.exe, закрываются все процессы CefSharp.BrowserSubprocess.exe являющиеся дочерними закрытому.<br /></p><div class="codebox"><pre><code>
#SingleInstance Force
#Persistent
#NoEnv 
SetBatchLines -1 

oSvc := ComObjGet(&quot;winmgmts:&quot;) 
ComObjConnect(deleteSink := ComObjCreate(&quot;WbemScripting.SWbemSink&quot;), &quot;ProcessDelete_&quot;)

Command := &quot;Within 0.1 Where TargetInstance ISA &#039;Win32_Process&#039;&quot;
oSvc.ExecNotificationQueryAsync(deleteSink, &quot;select * from __InstanceDeletionEvent &quot; Command)
Return

ProcessDelete_OnObjectReady(obj) {
	Process := obj.TargetInstance
	If (Process.Name != &quot;Krutub.exe&quot;)
		Return
	Query := &quot;SELECT * FROM Win32_Process WHERE Name = &#039;CefSharp.BrowserSubprocess.exe&#039; AND ParentProcessID = &quot; Process.ProcessID
	For Proc In ComObjGet(&quot;winmgmts:&quot;).ExecQuery(Query) 
		Proc.Terminate()
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 24 Jul 2016 10:44:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=106318#p106318</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Закрытие устаревших дочерних процессов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=106317#p106317</link>
			<description><![CDATA[<p>Не знаю, правильно ли назвал тему или нет. Пока что наработок нет, еще не придумал что в моем случае можно сделать.<br />Суть проблемы следующая. Есть некое приложение Krutub.exe, которое в процессе своей работы создает еще один процесс CefSharp.BrowserSubprocess.exe. По идее по окончанию работы с одним процессом CefSharp.BrowserSubprocess.exe он должен его закрывать и открывать новый, но по какой то известной только разработчику причине, он этого не делает. И если открыть диспетчер задач, то можно увидеть кучу мусора, который кушает физическую память.<br />Тут я пытался вставить ссылку на скрин, который я залил в атач.<br />Так вот! Как бы при помощи AHK, убивать устаревшие процессы? Т.е. крутуб.ехе имеет открытый CefSharp.BrowserSubprocess.exe и когда открывается новый CefSharp.BrowserSubprocess.exe, старый убивался?<br />Одна из идей была, при открытии CefSharp.BrowserSubprocess.exe, записывать его PID и при появлении еще одного CefSharp.BrowserSubprocess.exe, у которого будет другой PID, закрывать первый. Но тут пришла другая проблема. На одном компьютере может быть запущено 2 программы Krutube.exe и обе буду создавать дочерние процессы CefSharp.BrowserSubprocess.exe. Т.е. если сделать так, как я сначала подумал, то при создании другой программой процесса с таким именем, он будет закрывать действующий процесс.<br />Самый реальный вариант на данный момент, мне кажется это использовать RunWait, но с ним я еще не работал и как реализовать еще не разобрался. РанВайт мне нравится тем, что я указываю путь откуда будет запущена программа, так как у 2х Krutube.exe и соответственно дочерних процессов разные папки дислокации.<br />Так же еще вариант Proccess Wait, но тут возвращаемся к 2м параллельно запущенным программам.<br />Ну и тот же WinWait, но тут снова кость в горле это множество одинаковых окон.<br />Укажите правильный путь, подскажите как можно реализовать мою задачу?</p>]]></description>
			<author><![CDATA[null@example.com (DaVinchi)]]></author>
			<pubDate>Sun, 24 Jul 2016 10:14:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=106317#p106317</guid>
		</item>
	</channel>
</rss>
