Entwickler-Ecke

Windows API - "Computer herunterfahren" abfangen


Crowbar - Fr 24.01.03 11:51
Titel: "Computer herunterfahren" abfangen
Hallo,
ich möchte ein Programm schreiben, dass den Befehl "Windows beenden" abfängt.
D.h., bevor ich den Computer herunterfahre, soll ein Programm nachschauen, ob eine bestimmte Programmanwendung beendet wurde. Wenn nicht, soll diese bestimmte Programmanwendung vor dem Herunterfahren des Computers automatisch beendet werden.

Demzufolge muss also mein Programm im Hintergrund laufen und die entsprechende Message ("Computer soll herunterfahren") abfangen. Hat jemand eine Idee und vielleicht auch schon ein Beispiel?

Gruss Crowbar


Andi1982 - Fr 24.01.03 12:01

Hallo,
ich bin mir nicht ganz sicher, aber ich denke das Stichwort nach dem du suchen musst ist "Hooks".

Dazu steht auch was bei den Tutorials!

Versuchs einfach mal.

Gruß Andi


Anonymous - Fr 24.01.03 16:17

Ich will es jetzt nicht selbst testen, aber wenn du im Ereignis OnCloseQuery CanClose auf False stells, dann wird der Beendenvorgang unterbrochen.


Delete - Fr 24.01.03 16:20

Windows sendet an alle Programme beim Runterfahren ein WM_QUERYENDSESSION und fragt damit ob es runterfahren darf oder nicht. Sagst du ihm hier an der Stelle "Nein", dann fährt Windows auch nicht weiter runter.

Also die Message abfangen, kucken mit einem CreateToolHelp32Snapsoht, ob das Programm noch läuft, es mit TerminateProcess beenden, und dann Windows das OK geben zum runterfahren.


Crowbar - Fr 24.01.03 16:26

Hallo Luckie,
danke für Deinen Tip. Ich werde es einmal in dieser Richtung versuchen.
Vielleicht hat ja irgendwer ein weiteren Tip für einen speziellen Code?!

Tschüss Crowbar


Delete - Fr 24.01.03 16:38

Zum Finden eines Prozess und zum Beenden findest du Code auf meiner Seite und zwar ist es der Prozess-Betrachter [http://www.luckie-online.de/downloads.shtml#tools]. Ist mit Code.


Crowbar - Fr 24.01.03 16:47

Danke schön, wird mir weiterhelfen!
Tschüss Crowbar


Anonymous - Fr 24.01.03 17:52

Warum leicht, wenn es auch schwer geht. Machs ruhig mit WM_QUERYENDSESSION.