Wie überwache ich einen Prozess mit einer anderen Anwedung?
-
Moin, Moin...
Gibt es eine Möglichkeit mit einer Anwendung einen anderen laufenden Prozess zu überwachen(konkrete java(w).exe)?
Bislang habe ich nur mit EnumProcess() alle aktiven Prozesse aufgelistet und anhand des Namens geprüft, ob die java(w).exe noch läuft.Gibt es eine bessere Methode? Kann ich von "außen" herausfinden, welche Klasse ausgeführt wird?
Danke im voraus...
Ciao.
-
Wenn Du den Prozess selbst gestartet hast, dann kannst Du über das Handle des Prozesses zumindest sehen, ob der Prozess noch ausgeführt wird.
Wenn Du detailiertere Infos über den Prozess möchtest, dan musst Du in den Prozess entsprechende Mechanismen zur Überwachung einbauen. IPC = Inter-Prozess-Communication wäre das Stichwort.
Ohne das solche Mechanismen eingebaut sind sehe ich da keine Mögichkeiten.
-
Wenn du einmal ein handle hast, kannst du mit WaitForSingleObject(ProzessHandle, INFINITE oder ne Zahl) warten, bis der Prozess sich beendet. Du musst also nicht immer von neuem alle Prozesse dir auflisten.
Die Prozessauflistung geht auch mit CreateToolhelp32Snapshot() (s. msdn). Weiß net ob dir das n echtes Handle zurückliefert, wenn nicht nimmste OpenProcess() und übergibst die Prozess ID.mfG
-
Hallo,
nein du kannst nicht herausfinden welche Klasse gestartet wird. Rein theoretisch wäre das zwar möglich aber dann müsstest du eine Decompiler für das Java Runtime Environment schreiben, die zur Laufzeit den an die Virtuelle Maschine übergebenen Bytecode aufzeichnet und diesen decompilieren.
Falls du keine Reverse Engineer mit mit ein paar Jahren Erfahrung bist wird dir das aber nicht gelingen.
Falls du etwas über Java-Anwendungen wissen willst, dann kann ich dir nur empfehlen dir einen Decompiler für class files zu besorgen und dich dann von der main-methode durch source code listening durch programm zu hangeln, dann
erfährst du am meinsten.Viel Glück