<?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=11846&amp;type=atom" />
	<updated>2016-09-13T14:56:37Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=11846</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=107649#p107649" />
			<content type="html"><![CDATA[<p><strong>Alectric</strong>, нет, он создаётся только однократно при старте. Правда, может это у меня в системе что-то с WMI.</p>]]></content>
			<author>
				<name><![CDATA[Drugoy]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27463</uri>
			</author>
			<updated>2016-09-13T14:56:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=107649#p107649</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=107647#p107647" />
			<content type="html"><![CDATA[<p>Возможно объект создается бесконечное количество раз, без &quot;отпускания&quot; (ObjRelease) старого объекта.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2016-09-13T14:07:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=107647#p107647</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=107646#p107646" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Drugoy]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27463</uri>
			</author>
			<updated>2016-09-13T14:04:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=107646#p107646</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106323#p106323" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong> Воу. Это то что нужно. Причем и работает на ура.<br />Сейчас читаю эту конструкцию и понимаю, что я многое упустил за эти годы и AHK ушла далеко в перед.</p>]]></content>
			<author>
				<name><![CDATA[DaVinchi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26386</uri>
			</author>
			<updated>2016-07-24T12:27:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106323#p106323</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106321#p106321" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-07-24T11:23:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106321#p106321</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106319#p106319" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong> Не, эт не то. Ведь Krutube.exe продолжает работать.<br />Суть программы такова: Krutub.exe является как бы оболочкой с настройкой. Внеся все нужные настройки в этой программе, нажимаем пуск и с учетом настроек начинает открываться CefSharp.BrowserSubprocess.exe. Вот он открывался, выполнил свою задачу и закрывается. Krutube.exe открывает новый CefSharp.BrowserSubprocess.exe и так по кругу. По идее старый субпроцесс должен был закрыться, он не закрывается и висит в процессах, кушая память.</p>]]></content>
			<author>
				<name><![CDATA[DaVinchi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26386</uri>
			</author>
			<updated>2016-07-24T11:14:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106319#p106319</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106318#p106318" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-07-24T10:44:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106318#p106318</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Закрытие устаревших дочерних процессов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=106317#p106317" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[DaVinchi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26386</uri>
			</author>
			<updated>2016-07-24T10:14:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=106317#p106317</id>
		</entry>
</feed>
