<?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[Process oder Task killen]]></title><description><![CDATA[<p>Hi,<br />
Ich habe ein Programm das mir eine Anwendung öffnet, zB den Internet Explorer, nun möchte ich den Internet Explorer wieder schließen, also kille ich den Process, aber wie mache ich das?<br />
Hab den befehl &quot;TerminateProcess&quot; gefunden aber dazu brauch ich das handle von dem IExplorer, wie komme ich da dran?</p>
<p>mfG 5kYw4lKeR</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/5903/process-oder-task-killen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 31 May 2026 15:01:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/5903.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 May 2003 12:39:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 12:39:00 GMT]]></title><description><![CDATA[<p>Hi,<br />
Ich habe ein Programm das mir eine Anwendung öffnet, zB den Internet Explorer, nun möchte ich den Internet Explorer wieder schließen, also kille ich den Process, aber wie mache ich das?<br />
Hab den befehl &quot;TerminateProcess&quot; gefunden aber dazu brauch ich das handle von dem IExplorer, wie komme ich da dran?</p>
<p>mfG 5kYw4lKeR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28668</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Thu, 22 May 2003 12:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 12:44:00 GMT]]></title><description><![CDATA[<p>du kannst es auch mal mit exitprocess probieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28669</guid><dc:creator><![CDATA[PSolid]]></dc:creator><pubDate>Thu, 22 May 2003 12:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 13:01:00 GMT]]></title><description><![CDATA[<p>hmm, dabei brauch ich aber den ExitCode der Anwendung und den bekomme ich mit<br />
&quot;GetExitCodeProcess&quot; Wo ich dann auch wieder das Handle brauche, also wie komme ich jetzt an das Handle meines IExplorers?</p>
<p>mfG Ivo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28670</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Thu, 22 May 2003 13:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 13:56:00 GMT]]></title><description><![CDATA[<p>Das Programm mit CreateProcess öffnen, dann hast du nen Handle, den du dann zum Schliessen verwenden kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28671</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 22 May 2003 13:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 15:28:00 GMT]]></title><description><![CDATA[<p>Wo finde ich denn in der CreateProcess Funktion etwas dass ein Handle zurückgibt?</p>
<p>Kann man eigendlich auch nach nem Process mit Namen suchen und davon das Handle herrausbekommen ?</p>
<p>[ Dieser Beitrag wurde am 22.05.2003 um 17:29 Uhr von <strong>5kYw4lKeR</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28672</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Thu, 22 May 2003 15:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 15:58:00 GMT]]></title><description><![CDATA[<p>Denk dir meinen obigen Beitrag mit ShellExecute statt mit CreateProcess, dann müsste er stimmen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/28673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28673</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 22 May 2003 15:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 17:08:00 GMT]]></title><description><![CDATA[<p>hmm, ShellExecute gibt HINSTANCE zurück, damit kann ich irgendwie nix anfangen.<br />
der erste parameter ist ein HWND, aber dabei handelt es sich anscheinend um ein Handle für ein parent. Hier die erklärung aus der msdn:</p>
<blockquote>
<p>Window handle to a parent window. This window receives any message boxes that an application produces.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/28674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28674</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Thu, 22 May 2003 17:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 17:14:00 GMT]]></title><description><![CDATA[<p>das übergibst du, dieses handle gibt an, welches fenster als parent für den neu gestarteten prozess benutzt werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28675</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 22 May 2003 17:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 17:18:00 GMT]]></title><description><![CDATA[<p>blubber bla ... nimm ShellExecuteEx <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/28676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28676</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 22 May 2003 17:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 20:37:00 GMT]]></title><description><![CDATA[<p>Du kannst dich auch nicht entscheiden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Aber die funktion sieht ganz gut aus, in SHELLEXECUTEINFO wird auch endlich ma nen handle zurückgegeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ich werds mal versuchen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28677</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Thu, 22 May 2003 20:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 21:43:00 GMT]]></title><description><![CDATA[<p>Hmm soweit so gut, aber jetzt habe ich einen fehler wenn ich die andwendung starten will, es passiert nämlich ganichts, hab mal mit GetLastError() die letze fehlermeldung abgefangen und anscheinend ist es &quot;ERROR_ACCESS_DENIED&quot; Aber warum ?<br />
Hier mal ein kleiner Programmausschnitt:</p>
<pre><code>SHELLEXECUTEINFO m_sei;
    //m_sei.cbSize = 0; &lt;-Brauch ich das ? Wenn ja wie bekomm ich die richtige größe?
    m_sei.lpVerb = &quot;Open&quot;;
    m_sei.fMask = SEE_MASK_NOCLOSEPROCESS;
    m_sei.lpFile = &quot;notepad.exe&quot;;
    m_sei.lpDirectory = &quot;C:\\Windows\\&quot;;
    m_sei.nShow = SW_SHOW;

    ShellExecuteEx(&amp;m_sei);
    if (GetLastError()==ERROR_ACCESS_DENIED)
        MessageBox(&quot;Error Access Denied&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/28678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28678</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Thu, 22 May 2003 21:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Thu, 22 May 2003 22:28:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Original erstellt von 5kYw4lKeR:<br />
**```<br />
SHELLEXECUTEINFO m_sei;<br />
//m_sei.cbSize = 0; &lt;-Brauch ich das ? Wenn ja wie bekomm ich die richtige größe?</p>
<pre><code class="language-**"></code></pre>
</blockquote>
<p>Na, wie bekommt man die Größe von etwas?</p>
<pre><code class="language-cpp">m_sei.cbSize = sizeof(SHELLEXECUTEINFO);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/28679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28679</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Thu, 22 May 2003 22:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Mon, 26 May 2003 10:28:00 GMT]]></title><description><![CDATA[<p>Darauf bliebt &quot;cbSize&quot; immer 60 und es gibt einen Ausnahmefehler in der Kernel32</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28680</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Mon, 26 May 2003 10:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Mon, 26 May 2003 10:38:00 GMT]]></title><description><![CDATA[<p>Hm, und kannste mal vor der Strukturinitialisierung ein ZeroMemory aufrufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28681</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Mon, 26 May 2003 10:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Mon, 26 May 2003 10:51:00 GMT]]></title><description><![CDATA[<p>Thx, jetzt funzts !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28682</guid><dc:creator><![CDATA[5kYw4lKeR]]></dc:creator><pubDate>Mon, 26 May 2003 10:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Tue, 27 May 2003 01:39:00 GMT]]></title><description><![CDATA[<p>Mit CreateProcess gehts aber auch:</p>
<p>Das Handle steckt in der PROCESS_INFORMATION Struktur.</p>
<pre><code class="language-cpp">CString Pfad = &quot;C:\\Programme\\Internet Explorer\\IEXPLORE.EXE&quot;;
PROCESS_INFORMATION pin;
...
...
CreateProcess (Pfad,NULL,..., &amp;si, &amp;pin);
HANDLE hHandle = pin.hProcess;
</code></pre>
<p>Später dann:</p>
<pre><code class="language-cpp">TerminateProcess(hHandle,0); // Schießt das Programm ab
</code></pre>
<p>[ Dieser Beitrag wurde am 27.05.2003 um 03:42 Uhr von <strong>Mr. IfThen</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/28683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/28683</guid><dc:creator><![CDATA[Mr. IfThen]]></dc:creator><pubDate>Tue, 27 May 2003 01:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Sat, 11 Oct 2003 19:50:06 GMT]]></title><description><![CDATA[<p>hi!!! kann das jemand testen????</p>
<pre><code class="language-cpp">/****************************************************************************
Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle
und gibt es zurück.
Übergabe strProcessExe Prozess-Executable.
dwDesiredAccess Benötigter Prozess-Zugriff.
Rückgabe
Zugehöriges Handle oder NULL im Fehlerfall.
*****************************************************************************
HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess )
{
HANDLE hSnapShot; // System-Snap-Shot-Handle
PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur
HANDLE hProcess; // Prozess-Handle
CString strExeFile; // Hilfssstring
BOOL bOK; // Abbruch-Flag 
// Liste aller im System laufenden Prozesse erstellen
hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hSnapShot==INVALID_HANDLE_VALUE ) // Fehler aufgetreten
return NULL;
// Prozess-Executable in Kleinbuchstaben wandeln
strProcessExe.MakeLower( ); 
// Prozess-Liste durchlaufen
PEntry.dwSize=sizeof( PEntry ); 
bOK=::Process32First( hSnapShot, &amp;PEntry );
for( ; bOK; bOK=::Process32Next( hSnapShot, &amp;PEntry )){

// Pozess-ID in Handle umwandeln hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID );
if( hProcess==NULL )
// Umwandlung misslungen
continue;
// Prozess-Executable in Kleinbuchstaben wandeln und prüfen
strExeFile=PEntry.szExeFile;
strExeFile.MakeLower( );
if( strExeFile.Find( strProcessExe )!=-1 )
// Passenden Prozess gefunden, Handle zurückgeben
return hProcess;
}
// Nichts Passendes gefunden
return NULL;
}

Damit kannst Du mit

TerminateProcess( GetProcessHandle( &quot;apache.exe&quot;, PROCESS_TERMINATE ), 0 );

einen laufenden Prozess &quot;test.exe&quot; beenden. Das gelingt aber nur, wenn der ausführende Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei der Executable keinen Pfad anzugeben.
</code></pre>
<p>bitte mich informieren obs geht!<br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/370498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/370498</guid><dc:creator><![CDATA[flasher]]></dc:creator><pubDate>Sat, 11 Oct 2003 19:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Sat, 11 Oct 2003 19:51:43 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">/**************************************************************************** 
Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle 
und gibt es zurück. 
Übergabe strProcessExe Prozess-Executable. 
dwDesiredAccess Benötigter Prozess-Zugriff. 
Rückgabe 
Zugehöriges Handle oder NULL im Fehlerfall.
*****************************************************************************/
/HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess )
{ 
HANDLE hSnapShot; // System-Snap-Shot-Handle 
PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur 
HANDLE hProcess; // Prozess-Handle 
CString strExeFile; // Hilfssstring 
BOOL bOK; // Abbruch-Flag 
// Liste aller im System laufenden Prozesse erstellen 
hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); 
if( hSnapShot==INVALID_HANDLE_VALUE ) // Fehler aufgetreten 
return NULL; 
// Prozess-Executable in Kleinbuchstaben wandeln 
strProcessExe.MakeLower( ); 
// Prozess-Liste durchlaufen 
PEntry.dwSize=sizeof( PEntry ); 
bOK=::Process32First( hSnapShot, &amp;PEntry ); 
for( ; bOK; bOK=::Process32Next( hSnapShot, &amp;PEntry )){  

// Pozess-ID in Handle umwandeln hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID ); 
if( hProcess==NULL ) 
// Umwandlung misslungen 
continue; 
// Prozess-Executable in Kleinbuchstaben wandeln und prüfen 
strExeFile=PEntry.szExeFile; 
strExeFile.MakeLower( ); 
if( strExeFile.Find( strProcessExe )!=-1 ) 
// Passenden Prozess gefunden, Handle zurückgeben 
return hProcess; 
} 
// Nichts Passendes gefunden 
return NULL;
}

Damit kannst Du mit

TerminateProcess( GetProcessHandle( &quot;test.exe&quot;, PROCESS_TERMINATE ), 0 );

einen laufenden Prozess &quot;test.exe&quot; beenden. Das gelingt aber nur, wenn der ausführende Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei der Executable keinen Pfad anzugeben.
</code></pre>
<p>bitte testen!!!<br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/370499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/370499</guid><dc:creator><![CDATA[flasher]]></dc:creator><pubDate>Sat, 11 Oct 2003 19:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Sat, 11 Oct 2003 20:07:14 GMT]]></title><description><![CDATA[<p>bitte mal testen!!!</p>
<pre><code class="language-cpp">/****************************************************************************
Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle
und gibt es zurück.
Übergabe
strProcessExe Prozess-Executable.
dwDesiredAccess Benötigter Prozess-Zugriff.
Rückgabe
Zugehöriges Handle oder NULL im Fehlerfall.
*****************************************************************************/
HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess )
{
 HANDLE hSnapShot; // System-Snap-Shot-Handle
 PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur
 HANDLE hProcess; // Prozess-Handle
 CString strExeFile; // Hilfssstring
 BOOL bOK; // Abbruch-Flag
 // Liste aller im System laufenden Prozesse erstellen
 hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
 if( hSnapShot==INVALID_HANDLE_VALUE )
 // Fehler aufgetreten
 return NULL;
 // Prozess-Executable in Kleinbuchstaben wandeln
 strProcessExe.MakeLower( );
 // Prozess-Liste durchlaufen
 PEntry.dwSize=sizeof( PEntry );
 bOK=::Process32First( hSnapShot, &amp;PEntry );
 for( ; bOK; bOK=::Process32Next( hSnapShot, &amp;PEntry )){

 // Pozess-ID in Handle umwandeln
 hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID );
 if( hProcess==NULL )
 // Umwandlung misslungen
 continue;
 // Prozess-Executable in Kleinbuchstaben wandeln und prüfen
 strExeFile=PEntry.szExeFile;
 strExeFile.MakeLower( );
 if( strExeFile.Find( strProcessExe )!=-1 )
 // Passenden Prozess gefunden, Handle zurückgeben
 return hProcess;
 }
 // Nichts Passendes gefunden
 return NULL;
 }

Damit kannst Du mit

TerminateProcess( GetProcessHandle( &quot;test.exe&quot;, PROCESS_TERMINATE ), 0 );

einen laufenden Prozess &quot;test.exe&quot; beenden. Das gelingt aber nur, wenn der ausführende 
Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden 
Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei 
der Executable keinen Pfad anzugeben.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/370503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/370503</guid><dc:creator><![CDATA[flasher1]]></dc:creator><pubDate>Sat, 11 Oct 2003 20:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to Process oder Task killen on Sun, 12 Oct 2003 00:02:42 GMT]]></title><description><![CDATA[<p>Bist du bescheuert??<br />
<strong>CLOSED</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/370575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/370575</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Sun, 12 Oct 2003 00:02:42 GMT</pubDate></item></channel></rss>