Autor Beitrag
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Do 25.11.04 19:19 
Hallo Leutz,
ich programmiere mal wieder was, was es schon hundert mal gibt.
So ein Herunterfahr-Programm. Die Zeitsteuerung funktioniert und jetzt
habe ich es soweit gemacht, dass man auch Prozesse auswählen kann und wenn
diese beendet werden, fährt Windows runter.
Problem: Wenn ich z.Bsp. Einen Virenscanner druchlaufen lasse, beenden sich manche,
ohne einen Bericht anzuzeigen. Würde also funktionieren. Zeigt das Programm aber
noch einen Bericht, wird der Prozess ja immer noch vorhanden sein, also Windows nicht herunterfahren.

Jetzt habe ich mir überlegt, dass ich irgendwie herausfinden müsste, ob ein Prozess noch aktiv
ist, also Befehle ausführt, oder nicht.
Ich habe schonmal Sachen wie Fensterhandle und so gefunden, aber weiss net so recht weiter :(

Besteht die Möglichkeit da irgendwas in die Richtung zu machen, oder muss ich mir was
anderes einfallen lassen?

_________________
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Fr 26.11.04 01:08 
Hi!

könntest du bitte mal den Code posten der dir anzeigt ob ein Programm läuft oder nicht? Ich verstehe nicht ganz was du mit dem "Bericht" meinst, und was das mit dem Virenscanner zu tun hat.

gruss
merlin83
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 89

Win 98, Win 2000, SuSE Linux 9.3 Prof
D7 Personal, D2k5 Personal, Kylix
BeitragVerfasst: Fr 26.11.04 16:01 
Ich glaube, er meint, dass der Virenscanner zum Schluss immernoch einen Bericht anzeigt, den er mit seinem Programm "abschießen" will.

_________________
If ProblemExists=True
Then ProblemExists:=False;
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Fr 26.11.04 17:19 
Basti hat folgendes geschrieben:
Jetzt habe ich mir überlegt, dass ich irgendwie herausfinden müsste, ob ein Prozess noch aktiv
ist, also Befehle ausführt, oder nicht.
Ich habe schonmal Sachen wie Fensterhandle und so gefunden, aber weiss net so recht weiter :(

Du kannst das Problem auf drei Arten angehen.
1. Wenn Du eine spezifische Anwendung überwachen willst prüfst Du eben laufend die Fensterhandles und guckst, ob z.B. der Abschlussreport des Virenscanners dabei ist.
2. Du kannst die Last eines Prozesses protokollieren und unterhalb eines gewissen Schwellenwertes davon ausgehen, daß die Anwendung nicht mehr arbeitet.
3. Du kannst die Systemaufrufe/Messages eines Prozesses überwachen und wenn irgendwann nur noch Fenster gezeichnet werden (wenn überhaupt) davon ausgehen, daß die Anwendung nichts mehr tut.

Sonst fällt mir keine weitere Möglichkeit ein.

Bis neulich ...
Basti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Sa 27.11.04 12:41 
Titel: CPU Auslastung für einen Prozess
Okay, dann muss ich es halt etwas ungenauer machen.
Meint ihr es wäre eine gute Lösung die CPU Auslastung der letzten 10 Sekunden zu messen und
dann die Anwendung als beendet anzusehen, wenn der Durchschnittswert unter 8% sinkt?

Das war jetzt so das, was ich bei mir so ausgetestet habe.
Natürlich hängt es auch von einem PC ab, also sollte ich vielleicht dem Anwender noch die Möglichkeit
geben, einzustellen, was dieer Schwellenwert ist und 8% als Standard festlegen.

Allerdings habe ich jetzt immer noch das Problem, dass ich nicht weiss wie.
Ich habe hier mal im Forum gesucht, aber das sind Lösungen für die Gesamtauslastung. :(

Wisst ihr, wie ich das umsetzen kann?
Schonmal ganz großes DANKE! :wink:

_________________
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.