Process beenden
-
Hi,
ich hab folgendes Problem:
Ich will einen Process beenden wovon ich das HWND oder auch die Process-ID habe.So ich habs versucht mit
DestroyWindow(hwnd);
aber das Programm läuft unbeirrt weiter. So dann hab ich mich auf den Weg gemacht, mit
GetWindowThreadProcessId
die Process-ID rauszubekommen.Wie aber kann ich nun den Prozess beenden??
Irgendwie muss es ja gehen, da das Programm "Kill.exe" dieses Programm beenden kann, aber meine Applikation leider nichtKann mir einer bitte helfen
Danke im vorraus
-
Guck dir mal TerminateProcess an.
-
Hmm,
sieht ja schön und gut aus, aber wie kannich ein Handle auf den Process bekommen, der das PROCESS_TERMINATE Privileg hat???
-
Hi, ich habs selber hinbekommen.
Für die die sowas auch mal suchen solten:
GetWindowThreadProcessId(hwnd, &dwProcessID); hProcess = OenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); GetExitCodeProcess(hProcess, &dwExitCode); TerminateProcess(hProcess, dwExitCode);
Gruss Damion
-
TerminateProcess killt aber einen Process gnadenlos - Ressourcen werden nicht freigegeben.
-> Schau mal in die FAQ (oder Suche): WebFrizi hat mal was gebastelt, was erst versuch die Anwendung normal zu beenden
-
Stimmt, ich glaube ExitProcess sollte erstmal versucht werden. TerminateProcess gibt laut MSDN zwar die Ressourcen (object handles, threads) frei, aber die verwendeten DLLs werden nicht benachrichtigt.
-
ExitProcess beendet nur Deinen eigenen Prozess, KEINEN fremden Prozess!
So wie ich Damion verstanden habe möchte er einen fremden Prozeß killen... und das geht nicht mit ExitProcess!
-
Richtig, ich will einen fremden Prozess killen, und nicht meinen eigenen, ich bin nämlich in einem Service. Da das wär nicht praktisch
-
Hast Du es mal mit
SendMessage(hWnd, WM_CLOSE, NULL, NULL);
probiert?