<?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[Prüfen ob ein Prozess läuft]]></title><description><![CDATA[<p>Hi</p>
<p>Ich will überprüfen ob ein Prozess läuft und habe dazu folgende Funktionen:</p>
<pre><code class="language-cpp">HANDLE GetProcessHandle(CString csProcessName)
{
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	PROCESSENTRY32 proc;
	proc.dwSize = sizeof(PROCESSENTRY32);
	Process32First(snapshot, &amp;proc);
	CString tmp;
	do
	{
		tmp = proc.szExeFile;
		if (tmp == csProcessName)
			CloseHandle(snapshot);
		   return OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,proc.th32ProcessID);
	}while (TRUE == Process32Next(snapshot, &amp;proc) );
	CloseHandle(snapshot);
	return NULL;
}
</code></pre>
<p>und</p>
<pre><code class="language-cpp">bool hProcessRunning(HANDLE hProcess)
{
	if(GetPriorityClass(hProcess) != 0){
		return true;
	}
	return false;
}
</code></pre>
<p>Allerdings liefert mir hProcessRunning immer ein false zurück. Egal ob der Prozess läuft oder nicht.</p>
<p>Kann mir jemand sagen warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/89421/prüfen-ob-ein-prozess-läuft</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 18:26:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/89421.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Oct 2004 14:40:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Tue, 19 Oct 2004 14:40:23 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich will überprüfen ob ein Prozess läuft und habe dazu folgende Funktionen:</p>
<pre><code class="language-cpp">HANDLE GetProcessHandle(CString csProcessName)
{
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	PROCESSENTRY32 proc;
	proc.dwSize = sizeof(PROCESSENTRY32);
	Process32First(snapshot, &amp;proc);
	CString tmp;
	do
	{
		tmp = proc.szExeFile;
		if (tmp == csProcessName)
			CloseHandle(snapshot);
		   return OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,proc.th32ProcessID);
	}while (TRUE == Process32Next(snapshot, &amp;proc) );
	CloseHandle(snapshot);
	return NULL;
}
</code></pre>
<p>und</p>
<pre><code class="language-cpp">bool hProcessRunning(HANDLE hProcess)
{
	if(GetPriorityClass(hProcess) != 0){
		return true;
	}
	return false;
}
</code></pre>
<p>Allerdings liefert mir hProcessRunning immer ein false zurück. Egal ob der Prozess läuft oder nicht.</p>
<p>Kann mir jemand sagen warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632531</guid><dc:creator><![CDATA[the_alien]]></dc:creator><pubDate>Tue, 19 Oct 2004 14:40:23 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Tue, 19 Oct 2004 16:44:07 GMT]]></title><description><![CDATA[<blockquote>
<p>... Prozess läuft ...</p>
</blockquote>
<p>Definier das mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632645</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Tue, 19 Oct 2004 16:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 07:23:27 GMT]]></title><description><![CDATA[<p>Ob der Prozess existiert und auf anfragen reagiert (nicht abgestürzt ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632987</guid><dc:creator><![CDATA[the_alien]]></dc:creator><pubDate>Wed, 20 Oct 2004 07:23:27 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 07:35:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal sowas änliches gemacht aber auch so änlich wie du.<br />
was für ein prozess ist das den den du beowachten möchtest?</p>
<p>MFG TaccoGo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632995</guid><dc:creator><![CDATA[TaccoGo]]></dc:creator><pubDate>Wed, 20 Oct 2004 07:35:55 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 07:45:13 GMT]]></title><description><![CDATA[<p>the_alien schrieb:</p>
<blockquote>
<p>Ob der Prozess existiert und auf anfragen reagiert (nicht abgestürzt ist).</p>
</blockquote>
<p>Definiere &quot;Anfragen&quot; und &quot;abgestürzt sein&quot;. Nach meiner Meinung läuft ein &quot;abgestürzter&quot; Prozess nicht mehr.</p>
<p>Ist dir klar, was dir GetPriorityClass liefert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/633001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/633001</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 20 Oct 2004 07:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 09:12:51 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Definiere &quot;Anfragen&quot; und &quot;abgestürzt sein&quot;. Nach meiner Meinung läuft ein &quot;abgestürzter&quot; Prozess nicht mehr.</p>
</blockquote>
<p>Definiere &quot;läuft&quot;.<br />
Ich will einfach wissen ob der Prozess läuft oder nicht... wie soll ich das denn jetzt noch groß definieren?<br />
Isser da oder isser nicht da?</p>
<p>MFK schrieb:</p>
<blockquote>
<p>Ist dir klar, was dir GetPriorityClass liefert?</p>
</blockquote>
<p>Ja.<br />
Nämlich nen Fehler wenn das Handle ungültig ist und der Prozess nichtmehr läuft. Zumindest laut MSDN.</p>
<p>TaccoGo schrieb:</p>
<blockquote>
<p>was für ein prozess ist das den den du beowachten möchtest?</p>
</blockquote>
<p>Erstmal ist es für den Windows Script Host (wscript.exe) angedacht. Sollte aber auch jedweden anderen Prozess überwachen können.</p>
<pre><code class="language-cpp">bool ProcessRunning(CString csProcessName)
{
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	PROCESSENTRY32 proc;
	proc.dwSize = sizeof(PROCESSENTRY32);
	Process32First(snapshot, &amp;proc);
	CString tmp;
	do
	{
		tmp = proc.szExeFile;
		if (tmp == csProcessName){
			CloseHandle(snapshot);
			return true;
		}
	}while (TRUE == Process32Next(snapshot, &amp;proc) );
	CloseHandle(snapshot);
	return false;
}
</code></pre>
<p>Wenn ich es so mache funktioniert es. Nur ist es nicht umbedingt die beste Lösung immer die gesamte Prozesstabelle durchzusuchen ob die exe da drin steht.</p>
<p>Für das derzeitige Projekt ist es erstmal egal. Aber wo ist der Denkfehler in den obenstehenden Funktionen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/633063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/633063</guid><dc:creator><![CDATA[the_alien]]></dc:creator><pubDate>Wed, 20 Oct 2004 09:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 12:43:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>alle durchsuchen ist auch ne möglichkeit.</p>
<p>wegen den code oben fileicht hat es was mit den CloseHandle() zutun.<br />
probirs mal so:</p>
<pre><code class="language-cpp">HANDLE GetProcessHandle(CString csProcessName) 
{ 
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
    PROCESSENTRY32 proc; 
    proc.dwSize = sizeof(PROCESSENTRY32); 
    Process32First(snapshot, &amp;proc); 
    CString tmp; 
    do 
    { 
        tmp = proc.szExeFile; 
        if (tmp == csProcessName) 
            HANDLE h_proc=OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,proc.th32ProcessID); 
            CloseHandle(snapshot); 
           return h_proc;
     }while (TRUE == Process32Next(snapshot, &amp;proc) ); 
    CloseHandle(snapshot); 
    return NULL; 
}
</code></pre>
<p>MFG TaccoGo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/633302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/633302</guid><dc:creator><![CDATA[TaccoGo]]></dc:creator><pubDate>Wed, 20 Oct 2004 12:43:25 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 14:12:18 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich will einfach wissen ob der Prozess läuft oder nicht... wie soll ich das denn jetzt noch groß definieren?<br />
Isser da oder isser nicht da?</p>
</blockquote>
<p>Wenn er nicht da ist bekommst du auch kein handle darauf mit Process32First/Next. Sobald du ein handle auf nen Prozess bekommst, hat der zum Zeitpunkt von CreateToolhelp32Snapshot auch existiert.<br />
Wenn du checken will ob der Prozess zwischen dem CreateToolhelp32Snapshot Aufruf und jetzt beendet wurde mache in WaitForSingleObject(hProcess,0) auf das handle. Kommt ein WAIT_OBJECT_0 zurück wurde er beendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/633379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/633379</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Wed, 20 Oct 2004 14:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Prozess läuft on Wed, 20 Oct 2004 14:19:28 GMT]]></title><description><![CDATA[<p>Ah danke, das wars CMatt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/633388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/633388</guid><dc:creator><![CDATA[the_alien]]></dc:creator><pubDate>Wed, 20 Oct 2004 14:19:28 GMT</pubDate></item></channel></rss>