Handle eines Prozesses herausfinden und terminieren.

03/02/2008 - 03:05 von Thomas Steinbach | Report spam
Hallo NG,

wie kann ich mit WinAPI das Handle
eines laufenden Programmes, das z.B.
im TaskManager unter der Prozessliste
gelistet ist, herausfinden und dann
noch terminieren?

Also irgendwie mit

TerminateProcess( HANDLE, UINT )

vgl.
http://msdn2.microsoft.com/en-us/library/ms686714(VS.85).aspx


Aber wie komme ich an das HANDLE?

btw: Geht es auch irgendwie ueber die PID?


Thomas
 

Lesen sie die antworten

#1 Heiko Nocon
03/02/2008 - 09:59 | Warnen spam
Thomas Steinbach wrote:

TerminateProcess( HANDLE, UINT )



TerminateProcess sollte man nur als letzten Ausweg verwenden, wenn der
Prozess auf Anfrage und innerhalb einer angemessenen Wartezeit nicht von
selbst terminiert hat.

Aber wie komme ich an das HANDLE?



Bei nicht von dir selbst gestarteten Prozessen über OpenProcess()

btw: Geht es auch irgendwie ueber die PID?



Das findest du schon raus, wenn du die Doku von OpenProcess() liest. ;o)

An die PID wiederum kann man auf zwei Wegen kommen. Entweder man
enumeriert die Fenster, fischt das richtige anhand von Titel und
Fensterklasse raus und benutzt dann GetWindowThreadProcessId() oder man
benutzt das Toolhelp-API, um direkt die Prozesse zu enumerieren.

Meist ist es nötig, beides zu tuen, um den "richtigen" Prozess
zuverlàssig zu ermitteln und um erst einmal den soften Weg zur
Terminierung des Prozesses anwenden zu können, bevor man den dicken
Hammer TerminateProcess() herausholt.


Programmieren ist Arbeit

Ähnliche fragen