PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie krieg ich raus, ob ein Process tot ist?


Kennung Eins
2003-04-17, 09:42:47
Also Prozesse erkennen und so weiter kann ich schon :)

Nun steht in der MSDN drin:cntUsage
Number of references to the process. A process exists as long as its usage count is nonzero. As soon as its usage count becomes zero, a process terminates. Nur ist das leider irgendwie hohl, alle Prozesse, die ich mit meinem Programm überwache, haben cntUsage == 0.

Wieso?! Dann müssten die ja alle tot sein.

Gibt es einen anderen Weg, herauszubekommen, ob ein Prozess noch lebt?

Demirug
2003-04-17, 10:02:17
Wie währe es mit "GetExitCodeProcess" diese funktion liefert solange der Process läuft ein STILL_ACTIVE zurück.

Kennung Eins
2003-04-17, 13:40:22
Cool, scheint zu funktionieren ... :) nun muß ich nur mal nen Prozess abstürzen lassen ... hmm garnicht so einfach ;)

Danke!

Demirug
2003-04-17, 13:49:31
Originally posted by Kennung Eins
Cool, scheint zu funktionieren ... :) nun muß ich nur mal nen Prozess abstürzen lassen ... hmm garnicht so einfach ;)

Danke!

Nimm halt was selbstprogrammiertes und schreib was auf die Speicherzelle 0.

Kennung Eins
2003-04-17, 18:33:52
hmm ok, prinzipiell funktioniert das gut, implementiert ist es.

Jetzt habe ich nur noch das Problem, wie krieg ich raus, ob der Prozess abgestürzt ist? Also wenn ich im Task-Manager nachschaue, und es steht da "Keine Rückmeldung" - wie kriegt der Taskmanager das raus?

Demirug
2003-04-17, 18:48:09
Originally posted by Kennung Eins
hmm ok, prinzipiell funktioniert das gut, implementiert ist es.

Jetzt habe ich nur noch das Problem, wie krieg ich raus, ob der Prozess abgestürzt ist? Also wenn ich im Task-Manager nachschaue, und es steht da "Keine Rückmeldung" - wie kriegt der Taskmanager das raus?

"Keine Rückmeldung" ist was anderes als abgestürzt. "Keine Rückmeldung" bedeutet das ein Process nicht mehr auf Nachrichten des Windowmanager reagiert. Dieser Zustans ist aber umkehrbar sobald die Anwendung wieder reagiert ist alles wie vorher.

Natürlich kann man das auch selbst testen. Zuerst ermittelt man das Hauptfenster des Process und dann schickt man diesem Fenster ein WM_NULL mit der Function SendMessageTimeout.

Kennung Eins
2003-04-18, 16:54:11
Ok, hab auch dies hinbekommen :)

Doof ist nur, wenn Anwendungen 50 Fenster haben, von denen das Hauptfenster noch läuft, aber alle anderen 49 sub-fenster gecrasht sind ...

Naja, ich lass mir da mal was einfallen.