![]() |
Shutdown verhindern ohne Taskdialog
Hi,
ich fange die Nachricht WMQueryEndSession ab um noch ein paar Aufgaben vor dem Herunterfahren zu erledigen. In diesem Test nur um die Bildschirmauflösung zu ändern um ein schönes Bildchen anzuzeigen ;-)
Delphi-Quellcode:
Leider wird meine Form von einem Taskdialog, ihr wisst schon, diese "programm lässt sich nicht beenden" dialoge. Wie kann ich verhindern das so ein Dialog angezeigt wird?
procedure TForm1.WMQueryEndSession;
begin Msg.Result := 0; ChangeResolution(640, 480, 32); Show; sleep(5000); ChangeResolution(1280, 1024, 32); Hide; Msg.Result := 1; end; Nächtliche Grüße, Andy |
Re: Shutdown verhindern ohne Taskdialog
das problem ist dass die message erst nach ende der prozedur "verändert" wird.
Delphi-Quellcode:
sollte funktionieren...
const
UM_Blubb = WM_User + 1; procedure TForm1.WMQueryEndSession; begin // Abbrechen des herunterfahrens Msg.Result := 0; // Sich selber ne nachricht schicken PostMessage( self.handle, UM_Blubb,0,0 ); end; procedure TForm1.UMBlubb; begin ChangeResolution(640, 480, 32); Show; sleep(5000); ChangeResolution(1280, 1024, 32); Hide; // Msg.Result := 1; // Windows herunterfahren... hab ich grad ned da wie genau end; gruß reli // Edit: nen "M" vergessen .. pardon :-) |
Re: Shutdown verhindern ohne Taskdialog
Habs jetzt so gelöst:
Delphi-Quellcode:
Da beim Aufruf von ExitWin(EWX_REBOOT) die Message WMQueryEndSession erneut gesendet wird, verwende ich eine globale Variable vom Typ Boolean um festzustellen ob die Aktion bereits durchgeführt wurde.
var
Done: Boolean; ... ... procedure TForm1.WMQueryEndSession; begin if not Done then begin Msg.Result := 0; end else begin Msg.Result := 1; end; end; procedure TForm1.FormPaint(Sender: TObject); begin Hide; Done := False; end; procedure TForm1.WMEndSession; begin ChangeResolution(640, 480, 32); Show; sleep(5000); ChangeResolution(1280, 1024, 32); Hide; Done := True; ExitWin(EWX_REBOOT); end; |
Re: Shutdown verhindern ohne Taskdialog
jo klar hatte ich vergessen.. sonst hängst in ner endlosschleife...
|
Re: Shutdown verhindern ohne Taskdialog
Nachdem Aufruf von ExitWin(...) sollte auch noch ein Application.Terminate; folgen da sonst der "Anwendung lässt sich nicht beenden"-Dialog trotzdem für ein paar Milisekunden erscheint. Jedoch kommt dieser Dialog diesmal erst nachdem die Aktionen durchgeführt wurden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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