<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Prozess Handling]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich wälze jetzt schon bereits seid über 2 Stunden im google und in der MSDN, wo ich was finden kann über Prozesshandling.</p>
<p>Eigentlich muss ich nur was ganz simples machen:</p>
<p>Meine Anwendung(parent) soll eine andere Anwendung(child) starten, und er dann weiterlaufen, wenn die child Anwendung wieder beendet ist.</p>
<p>Jetzt hab ich das ganze mit CreateProcess() versucht.</p>
<pre><code class="language-cpp">HINSTANCE proz;
DWORD procze;
STARTUPINFO StartInfo;
memset(&amp;StartInfo,0,sizeof(STARTUPINFO));
StartInfo.cb = sizeof(STARTUPINFO);
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = SW_SHOW;
PROCESS_INFORMATION ProcInfo;
if (! CreateProcess(0,&quot;notepad.exe&quot;,0,0,0,0,0,0,&amp;StartInfo,&amp;ProcInfo) )
			MessageBox(NULL,&quot;failed&quot;,NULL,MB_OK);
</code></pre>
<p>So, das funktioniert auch alles wunderbar. Notepad öffnet und ich kann alles wunderbar eintippen.</p>
<p>So, jetzt kommen wir zur Beendung des Prozesses, also: Meine Parent Anwendung soll dann weiterlaufen, wenn notepad wieder geschlossen wurde.</p>
<p>Bis jetzt hab ich diese Versuche gestartet, die direkt nach dem oben aufgeführten Code folgen, aber erfolglos waren:</p>
<p>Versuch 1</p>
<pre><code class="language-cpp">DWORD exetit = 0;
while(GetExitCodeProcess(&amp;ProcInfo.hProcess,&amp;exetit) != STILL_ACTIVE ){}
</code></pre>
<p>Versuch 2</p>
<pre><code class="language-cpp">WaitForSingleObject(&amp;ProcInfo.hProcess,INFINITE);
</code></pre>
<p>Versuch 3</p>
<pre><code class="language-cpp">HANDLE hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, ProcInfo.dwProcessId);
while(GetExitCodeProcess(hProc,&amp;exetit) != STILL_ACTIVE ){}
</code></pre>
<p>Wie gesagt, war alles erfolglos. Ich hab mir auch schon die Prozessliste angeschaut. Der Prozess, der neu erzeugt wird, wird nach dem Beenden von Notepad auch wieder terminiert.</p>
<p>Ich hoffe, dass ihr mir weiterhelfen könnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168390/prozess-handling</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 03:33:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168390.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Dec 2006 15:52:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prozess Handling on Thu, 21 Dec 2006 15:52:17 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich wälze jetzt schon bereits seid über 2 Stunden im google und in der MSDN, wo ich was finden kann über Prozesshandling.</p>
<p>Eigentlich muss ich nur was ganz simples machen:</p>
<p>Meine Anwendung(parent) soll eine andere Anwendung(child) starten, und er dann weiterlaufen, wenn die child Anwendung wieder beendet ist.</p>
<p>Jetzt hab ich das ganze mit CreateProcess() versucht.</p>
<pre><code class="language-cpp">HINSTANCE proz;
DWORD procze;
STARTUPINFO StartInfo;
memset(&amp;StartInfo,0,sizeof(STARTUPINFO));
StartInfo.cb = sizeof(STARTUPINFO);
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = SW_SHOW;
PROCESS_INFORMATION ProcInfo;
if (! CreateProcess(0,&quot;notepad.exe&quot;,0,0,0,0,0,0,&amp;StartInfo,&amp;ProcInfo) )
			MessageBox(NULL,&quot;failed&quot;,NULL,MB_OK);
</code></pre>
<p>So, das funktioniert auch alles wunderbar. Notepad öffnet und ich kann alles wunderbar eintippen.</p>
<p>So, jetzt kommen wir zur Beendung des Prozesses, also: Meine Parent Anwendung soll dann weiterlaufen, wenn notepad wieder geschlossen wurde.</p>
<p>Bis jetzt hab ich diese Versuche gestartet, die direkt nach dem oben aufgeführten Code folgen, aber erfolglos waren:</p>
<p>Versuch 1</p>
<pre><code class="language-cpp">DWORD exetit = 0;
while(GetExitCodeProcess(&amp;ProcInfo.hProcess,&amp;exetit) != STILL_ACTIVE ){}
</code></pre>
<p>Versuch 2</p>
<pre><code class="language-cpp">WaitForSingleObject(&amp;ProcInfo.hProcess,INFINITE);
</code></pre>
<p>Versuch 3</p>
<pre><code class="language-cpp">HANDLE hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, ProcInfo.dwProcessId);
while(GetExitCodeProcess(hProc,&amp;exetit) != STILL_ACTIVE ){}
</code></pre>
<p>Wie gesagt, war alles erfolglos. Ich hab mir auch schon die Prozessliste angeschaut. Der Prozess, der neu erzeugt wird, wird nach dem Beenden von Notepad auch wieder terminiert.</p>
<p>Ich hoffe, dass ihr mir weiterhelfen könnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196201</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Thu, 21 Dec 2006 15:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Prozess Handling on Thu, 21 Dec 2006 16:55:58 GMT]]></title><description><![CDATA[<p>Dann nimm halt versuch 3:</p>
<pre><code class="language-cpp">WaitForSingleObject(ProcInfo.hProcess,INFINITE);
</code></pre>
<p>Oder les nächstes mal einfach die Doku...<br />
<a href="http://msdn.microsoft.com/library/en-us/dllproc/base/creating_processes.asp" rel="nofollow">http://msdn.microsoft.com/library/en-us/dllproc/base/creating_processes.asp</a><br />
Und beachte dass Dein Code nur in der ANSI-Version funktioniert, nicht aber in der Unicode-Version...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196239</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 21 Dec 2006 16:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Prozess Handling on Thu, 21 Dec 2006 21:30:03 GMT]]></title><description><![CDATA[<p>ja, so hab ich das ja auch schon gehabt</p>
<p>problem bei der sache ist, dass der prozess (in diesem falle meine anwendung) noch gar nicht terminiert ist, er aber trotzdem bei WaitForSingleObject() sagt, dass es so ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196373</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Thu, 21 Dec 2006 21:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Prozess Handling on Thu, 21 Dec 2006 21:35:49 GMT]]></title><description><![CDATA[<p>also ich hab jetzt einfach mal den original code aus der msdn genommen und das ausprobiert.</p>
<p>zu meinem erstaunen funktioniert das auch, aber ich kann nicht wirklich unterschiede, bis auf die initialisierungen, zu meiner version feststellen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196375</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Thu, 21 Dec 2006 21:35:49 GMT</pubDate></item><item><title><![CDATA[Reply to Prozess Handling on Sat, 23 Dec 2006 19:58:34 GMT]]></title><description><![CDATA[<p>Handelt es sich um die gleiche Anwendung?</p>
<p>Viele Anwendungen (z.B. Explorer) checken, ob schon eine Instanz läuft, und wenn ja, geben die Kommandozeile an die laufende Instanz weiter und beenden sich selbst. Damit wird der gestartete prozeß praktisch sofort beendet, obwohl ein neues Fenster aufgeht.</p>
<p>Ansonsten - die Initialisierungen ochmal prüfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1197132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1197132</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sat, 23 Dec 2006 19:58:34 GMT</pubDate></item></channel></rss>