Prozesse überwachen

Freaky_09

Mitglied
Hallo!

Ich möchte folgendes umsetzen kann aber einfach keine Lösung dafür finden:

Ich möchte von meinem Service heraus gewisse Systemprozesse überwachen.
Dh wenn ein bestimmtes Programm gestartet wird und der Prozess im Taskmanager erscheint, so soll mein Service das bemerken und dafür einen anderen bestimmten Prozess beenden.

Das Problem seh ich dabei, dass ich keine Lösung gefunden habe wie ich dauerhaft überprüfen kann ob der Prozess gestartet wurde.
Ich habs versucht mit: Überprüfen, Sleep, Überprüfen, Sleep, ... - nur damit steigt die CPU-Auslastung um einiges.
Für Java gibts es einen ProcessListener (FaceListener) - gibts sowas auch für vb?

Danke im Voraus!
 
Ich hab für dich eine kleine Helperklasse von mir. Ist ein SimpleProcessWatcher, dem du ein Intervall (in Millisekunden) einstellen kannst und der dir für alle beendeten bzw. gestarteten Processe ein entsprechendes Event wirft.

Braucht wenig CPU ist jedoch nicht threadsicher. Siehe Anhang.

Einfach die DLL in die Referenzen einbinden. Namespace lautet NorbertEder.Com.Helper.ProcessWatcher. Die Klasse nett sich SimpleProcessWatcher. Enthalten sind zwei Events zu denen du die entsprechenden Handler hängen musst.

Viel Spass.
 

Anhänge

  • 27249attachment.zip
    2,8 KB · Aufrufe: 616
Der ist zwar schon etwas älter der Thread ber ich erweke ihn mal wieder zum Leben!

Ich will unter Java ein Programm erstellen welches mir unteranderem alle Prozesse loggt die beim start des Programms vorhanden waren und alle prozesse loggt die während der Laufzeit gestartet bzw. beendet wurden.

Ich habe nun gesehen, dass hier etwas schon fertig ist jedoch weiß ich nciht wie ich von der dll an den code komme...

Könnte mir jmd helfen?
 
Warum dafür eine Java-Anwendung entwickeln? Der Weg über JNI ist nicht gerade der beste in diesem Fall. Die DLL hast du, einfach eine kleine .NET Anwendung herumgebaut und fertig.
 
Das ist ja nur ein Teil des Programms.

Daher wollte ich das ganze eigentlich in Java Programmieren und die Prozessüberwachung dann über JNI einbinden.

So dass ich anfangs alle Processe loggen kann die aktiv sind, dann während der laufzeit immer die Prozesse die gestartet / beendet werden geloggt werden.

Kann ich das nicht auf diesem Weg machen, denn leider habe ich keine Programmierkenntnisse mit .NET
 
Ich hab für dich eine kleine Helperklasse von mir. Ist ein SimpleProcessWatcher, dem du ein Intervall (in Millisekunden) einstellen kannst und der dir für alle beendeten bzw. gestarteten Processe ein entsprechendes Event wirft.

Braucht wenig CPU ist jedoch nicht threadsicher. Siehe Anhang.

Einfach die DLL in die Referenzen einbinden. Namespace lautet NorbertEder.Com.Helper.ProcessWatcher. Die Klasse nett sich SimpleProcessWatcher. Enthalten sind zwei Events zu denen du die entsprechenden Handler hängen musst.

Viel Spass.

Bin durch Zufall hier gelandet und fande dies ganz interessant und wollte es ausprobieren.

Kannst du mir eine genaue Anleitung dafür geben wie man das macht? Vielleicht hast du ja eine Beispielapplikation oder was anderes, wo deine dll eingesetzt wird.

Ich habe hier mal was gelesen, aber da wird halt nichts erklärt.. stehen nur paar Codezeilen da und leider nicht das vollständige :(
http://www.mycsharp.de/wbb2/thread.php?goto=nextnewest&threadid=67063
 
Zurück