![]() |
Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Hallo Freunde :hi: ,
ich hab manchmal das Problem, dass ich mein Programm mit dem Shutdown-Befehl aus der CodeLibrary runterfahren will, dabei aber irgendein Programm abschmiert und der PC hängenbleibt... In meiner Log-Datei steht aber dann trotzdem "erfolgreich runtergefahren...", weil das ja vor dem SD-Befehl geschrieben wird. Gibt es ne Möglichkeit, NACH dem Shutdown-Befehl noch was mit dem Programm zu machen? 1. Das Programm zu schließen (geht nicht mit Application.Terminate nach dem SD-Befehl...) 2. Zu prüfen, ob der PC auch wirklich runtergefahren wird weiss jemand rat? MfG Lefko. |
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Wie, was, da kann keiner was zu sagen?! :shock:
|
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
*push* :roll:
|
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Moin Lefko,
schau Dir dazu mal die Message WM_QUERYENDSESSION an. (im PSDK oder auf MSDN) |
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Ja, hab mir das mal durchgelesen bei der MSDN...
aber ich weiss nich so ganz, was ich damit jetz anfangen kann bzw. wie ich das umsetzen kann!
Code:
Wie kann mein Programm den jetzt überprüfen, ob alle Programme ordentlich beendet wurden und das System runterfährt?
[color=blue]WM_QUERYENDSESSION[/color]
The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls the ExitWindows function. If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero. After processing this message, the system sends the WM_ENDSESSION message with the wParam parameter set to the results of the WM_QUERYENDSESSION message. A window receives this message through its WindowProc function. LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window WM_QUERYENDSESSION, // the message to send WPARAM wParam, // not used LPARAM lParam // logoff option ); [color=blue]Parameters[/color] [color=blue]wParam [/color] This parameter is reserved for future use. [color=blue]lParam [/color] If this parameter includes ENDSESSION_LOGOFF, the user is logging off. (Note that this parameter is a bit mask. To test for this value, use a bit-wise operation; do not test for equality.) If this parameter is zero, the system is shutting down. [color=blue]Return Values[/color] If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE. [color=blue]Remarks[/color] By default, the DefWindowProc function returns TRUE for this message. When an application returns TRUE for this message, it receives the WM_ENDSESSION message and it is terminated, regardless of how the other applications respond to the WM_QUERYENDSESSION message. [color=blue]Windows Me/98/95:[/color] After all applications return TRUE for this message, they receive the WM_ENDSESSION and they are terminated. Ich kann sowas nicht in Code übersetzen... :oops: daher wäre ich für ne Unterstützung in Form von Erklärten Anweisungen oder gar Code sehr dankbar :) MfG Lefko. //Edith sagt: Man, jetz hab ich schon dreimal editiert und s geht immer noch nicht! Wieso kann man in diesem dummen Code-Text keinerlei Farben oder fett/kursiv etc. benutzen!? |
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Kann mir keiner dabei helfen?
|
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Überschreibe die WndProc und fang eben WM_QUERYENDSESSION ab. Aber nicht vergessen als MessageResult True zurückzugeben, sonst blockierst du selber das Rinterfahren. Hat Windows von allen Toplevel-Fenstern das OK bekommen, schickt es noch mal ein WM_ENDSESSION.
|
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Hm, ich bin ja dankbar für deine Tipps, du kannst das sicher auch locker programmieren, aber ich kann mit diesen Tipps fast nix anfangen, weil ich nicht weiss, was sie bedeuten..."überschreibe die WndProc" :shock: aha.. hab ich schon mal gehört...
ich will nich als faul gelten, deshalb würd ich dich bzw. euch bitten, mir links zu tutorials oder sonstige möglichkeiten, sich da etwas reinzuarbeiten, zu posten! Ich verstehe das System (noch) nicht, das hinter dem Senden/Empfangen/Auswerten von Nachrichten steckt... :oops: Danke schonmal :) MfG Lefko |
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Huhu, hat keiner Tutorials oder sonstige Hilfen für mich?
Ich kann mir leider nix selbst zusammenreimen, weil ich dafür zuwenig Ahnung habe von Messages und so.... :( Wäre toll, wenn ihr mir doch noch helfen könntet! |
Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Delphi-Quellcode:
Und das machst du jetzt mit WM_QUERYENDSESSION.
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure WndProc(var msg: TMessage); override; end; const MyMessage = WM_USER+1974; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WndProc(var msg: TMessage); begin inherited; case msg.Msg of MyMessage: ShowMessage('Huhu'); end; end; procedure TForm1.Button1Click(Sender: TObject); begin SendMessage(Handle, MyMessage, 0, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz