<?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[Code erkläreung zu prozess &#x2F; programm beenden]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
KillProcessByName(&quot;test.exe&quot;);      // Anstatt Icq.exe halt &quot;Test.exe&quot; eingeben!
return 0;
}

int KillProcessByName(char *szProcessToKill)
{
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
DWORD dwPriorityClass;

hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

if( hProcessSnap == INVALID_HANDLE_VALUE )
  {
    printError( &quot;CreateToolhelp32Snapshot (of processes)&quot; );
    return( 0 );
  }

pe32.dwSize = sizeof( PROCESSENTRY32 );

if( !Process32First( hProcessSnap, &amp;pe32 ) )
  {
    printError( &quot;Process32First&quot; );  
    CloseHandle( hProcessSnap );     
    return( 0 );
  }

do{
    if(!strcmp(pe32.szExeFile,szProcessToKill))
  	{
  	printf(&quot;Prozess: %s \n&quot;,pe32.szExeFile);
  	printf(&quot;PID: %d \n&quot;,pe32.th32ProcessID );  
	hProcess = OpenProcess(PROCESS_TERMINATE,0, pe32.th32ProcessID);
	TerminateProcess(hProcess,0);
	CloseHandle(hProcess);
  	} 
  } while( Process32Next(hProcessSnap,&amp;pe32) );

CloseHandle( hProcessSnap );
return( 1 );
}

void printError( TCHAR* msg )
{
  DWORD eNum;
  TCHAR sysMsg[256];
  TCHAR* p;

  eNum = GetLastError( );
  FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
         NULL, eNum,
         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
         sysMsg, 256, NULL );

  // Trim the end of the line and terminate it with a null
  p = sysMsg;
  while( ( *p &gt; 31 ) || ( *p == 9 ) )
    ++p;
  do { *p-- = 0; } while( ( p &gt;= sysMsg ) &amp;&amp;
                          ( ( *p == '.' ) || ( *p &lt; 33 ) ) );

  // Display the message
  printf( &quot;\n  WARNING: %s failed with error %d (%s)&quot;, msg, eNum, sysMsg );
</code></pre>
<p>Kann mir jemand diesen code genau erklären und wie das genau mit dem programm / prozess beenden funktioniert?<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206592/code-erkläreung-zu-prozess-programm-beenden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 09:59:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206592.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Feb 2008 16:46:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 16:46:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
KillProcessByName(&quot;test.exe&quot;);      // Anstatt Icq.exe halt &quot;Test.exe&quot; eingeben!
return 0;
}

int KillProcessByName(char *szProcessToKill)
{
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
DWORD dwPriorityClass;

hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

if( hProcessSnap == INVALID_HANDLE_VALUE )
  {
    printError( &quot;CreateToolhelp32Snapshot (of processes)&quot; );
    return( 0 );
  }

pe32.dwSize = sizeof( PROCESSENTRY32 );

if( !Process32First( hProcessSnap, &amp;pe32 ) )
  {
    printError( &quot;Process32First&quot; );  
    CloseHandle( hProcessSnap );     
    return( 0 );
  }

do{
    if(!strcmp(pe32.szExeFile,szProcessToKill))
  	{
  	printf(&quot;Prozess: %s \n&quot;,pe32.szExeFile);
  	printf(&quot;PID: %d \n&quot;,pe32.th32ProcessID );  
	hProcess = OpenProcess(PROCESS_TERMINATE,0, pe32.th32ProcessID);
	TerminateProcess(hProcess,0);
	CloseHandle(hProcess);
  	} 
  } while( Process32Next(hProcessSnap,&amp;pe32) );

CloseHandle( hProcessSnap );
return( 1 );
}

void printError( TCHAR* msg )
{
  DWORD eNum;
  TCHAR sysMsg[256];
  TCHAR* p;

  eNum = GetLastError( );
  FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
         NULL, eNum,
         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
         sysMsg, 256, NULL );

  // Trim the end of the line and terminate it with a null
  p = sysMsg;
  while( ( *p &gt; 31 ) || ( *p == 9 ) )
    ++p;
  do { *p-- = 0; } while( ( p &gt;= sysMsg ) &amp;&amp;
                          ( ( *p == '.' ) || ( *p &lt; 33 ) ) );

  // Display the message
  printf( &quot;\n  WARNING: %s failed with error %d (%s)&quot;, msg, eNum, sysMsg );
</code></pre>
<p>Kann mir jemand diesen code genau erklären und wie das genau mit dem programm / prozess beenden funktioniert?<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463433</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Tue, 26 Feb 2008 16:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 17:05:48 GMT]]></title><description><![CDATA[<p>Schau' dir die Dokumentation der verwendeten APIs in der MSDN an und frag' nach, wenn dir etwas unklar ist.</p>
<p>greetz, Swordfish</p>
<p>BTW: Ab nach WinAPI.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463442</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 26 Feb 2008 17:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 17:40:06 GMT]]></title><description><![CDATA[<p>Hm hab schon in der msdn nachgeschaut aber so 100% klar is mir noch nicht was hier genau gemacht wird und wieso.</p>
<pre><code class="language-cpp">hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

if( hProcessSnap == INVALID_HANDLE_VALUE )
  {
    printError( &quot;CreateToolhelp32Snapshot (of processes)&quot; );
    return( 0 );
  }

pe32.dwSize = sizeof( PROCESSENTRY32 );

if( !Process32First( hProcessSnap, &amp;pe32 ) )
  {
    printError( &quot;Process32First&quot; );  
    CloseHandle( hProcessSnap );    
    return( 0 );
  }

do{
    if(!strcmp(pe32.szExeFile,szProcessToKill))
      {
      printf(&quot;Prozess: %s \n&quot;,pe32.szExeFile);
      printf(&quot;PID: %d \n&quot;,pe32.th32ProcessID );  
    hProcess = OpenProcess(PROCESS_TERMINATE,0, pe32.th32ProcessID);
    TerminateProcess(hProcess,0);
    CloseHandle(hProcess);
      }
  } while( Process32Next(hProcessSnap,&amp;pe32) );

CloseHandle( hProcessSnap );
return( 1 );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1463462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463462</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Tue, 26 Feb 2008 17:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 18:01:10 GMT]]></title><description><![CDATA[<p>Stell bitte eine konkrete Frage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463475</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 26 Feb 2008 18:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 18:01:25 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-547.html" rel="nofollow">Shade Of Mine</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463477</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 26 Feb 2008 18:01:25 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 21:52:02 GMT]]></title><description><![CDATA[<p>wieso muss ich hier die größe des Prozesses erfragen?</p>
<p>pe32.dwSize = sizeof( PROCESSENTRY32 );</p>
<p>Für was benötigt man diese?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463654</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Tue, 26 Feb 2008 21:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 22:08:52 GMT]]></title><description><![CDATA[<p>Hättest du in die MSDN geschaut dann hättest du diesen Satz gelesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<blockquote>
<p>Remarks</p>
<p>The calling application must set the dwSize member of PROCESSENTRY32 to the size, in bytes, of the structure.</p>
<p>To retrieve information about other processes recorded in the same snapshot, use the Process32Next function.</p>
</blockquote>
<p>schirrmie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463665</guid><dc:creator><![CDATA[schirrmie]]></dc:creator><pubDate>Tue, 26 Feb 2008 22:08:52 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 22:12:57 GMT]]></title><description><![CDATA[<p>simmero schrieb:</p>
<blockquote>
<p>pe32.dwSize = sizeof( PROCESSENTRY32 );</p>
</blockquote>
<p>Hast Du schon mal Gedanken darüber gemacht für was <em>sizeof</em> gut ist?<br />
Und schau Dir die darauffolgende Zeile an. Des Rätsels Lösung ist die Funktion <em>Process32First()</em>!</p>
<p>Tipp Nr.1: Drücke die Taste &quot;F1&quot; (oder nimm den Menüpunkt für die eingebaute Hilfe des Compilers bzw. der IDE)<br />
Tipp Nr.2: Suche in der MSDN nach den Begriffen <em>sizeof</em> und <em>Process32First</em><br />
Tipp Nr.3: Suche mit Google o.ä. nach den Begriffen <em>sizeof</em> und <em>Process32First</em></p>
<p>Und lese die Beschreibung von <em>Process32First()</em> genau durch (wichtiger Hinweis unter &quot;Remark&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ).<br />
Wie Du siehst, Du kannst schon durch Eigeninitiative sehr viel erreichen...</p>
<p>Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463673</guid><dc:creator><![CDATA[Mmacher]]></dc:creator><pubDate>Tue, 26 Feb 2008 22:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Tue, 26 Feb 2008 22:27:45 GMT]]></title><description><![CDATA[<p>Das ist dafür da damit Process32First weiß mit welcher Version der Struktur sie zu tun hat. Damit hält sich Microsoft offen die Struktur noch zu erweitern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463681</guid><dc:creator><![CDATA[ver]]></dc:creator><pubDate>Tue, 26 Feb 2008 22:27:45 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 02:56:13 GMT]]></title><description><![CDATA[<p>Der Code beendet den Prozess, ist doch vollkommen klar. Oder hast du eine spezielle Frage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463720</guid><dc:creator><![CDATA[Rainer L.]]></dc:creator><pubDate>Wed, 27 Feb 2008 02:56:13 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 10:42:04 GMT]]></title><description><![CDATA[<p>Was da passiert ist mir auch klar aber ich wollte wissen was im background genau passiert.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463842</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Wed, 27 Feb 2008 10:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 11:57:19 GMT]]></title><description><![CDATA[<p>Nur nochma zum Verständnis, hab ich das nun richtig verstanden mit:</p>
<p>hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );</p>
<p>Erstelle ich mir eine Liste der aktuell laufenden Prozesse. Mit dieser Liste kann ich dann arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463904</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Wed, 27 Feb 2008 11:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 12:03:11 GMT]]></title><description><![CDATA[<p>Ja.</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1463912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1463912</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 27 Feb 2008 12:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 13:50:34 GMT]]></title><description><![CDATA[<p>Ah ok danke. Noch eine Frage wann habe ich hier eine INVALID_HANDLE_VALUE? Das ist doch dann eine Falsche Adresse die ich da zurück bekomme oder?</p>
<p>pe32.dwSize = sizeof( PROCESSENTRY32 );<br />
Die Größe benötige ich um zum nächsten Prozess in der Liste zu springen mit Process32Next(hProcessSnap,&amp;pe32)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464002</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Wed, 27 Feb 2008 13:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 14:10:15 GMT]]></title><description><![CDATA[<p><code>INVALID_HANDLE_VALUE</code> bekommst du, wenn bei <code>CreateToolhelp32Snapshot( )</code> etwas schief gegangen ist.</p>
<p>Die Größe der Struktur brauchen <code>CreateToolhelp32Snapshot( )</code> und <code>Process32Next( )</code> weil es von <code>PROCESSENTRY32</code> verschiedene Versionen in den unterschiedlichen Versionen von Windows gibt. Es sind über die Zeit immer wieder Attribute hinzugekommen und somit hat sich auch die Größe der Struktur verändert.</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464042</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 27 Feb 2008 14:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to Code erkläreung zu prozess &#x2F; programm beenden on Wed, 27 Feb 2008 15:01:43 GMT]]></title><description><![CDATA[<p>danke für eure hilfe nun ist alles klar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464086</guid><dc:creator><![CDATA[simmero]]></dc:creator><pubDate>Wed, 27 Feb 2008 15:01:43 GMT</pubDate></item></channel></rss>