Online
Registriert seit: 28. Mär 2005
Ort: Hamburg
848 Beiträge
Delphi 11 Alexandria
|
AW: Herunterfahren verhindern, Programm nicht beenden
23. Jun 2016, 13:57
Dumme Idee: Wenn ich den Quelltext in Vcl.Forms richtig verstehe, dann gibt eine VCL-Anwendung auf WM_QUERYENDSESSION immer True (1) zurück. Und gibt das erst gar nicht an deine Formulare weiter.
Umgehen (und richtig bearbeiten) könntest du das indem du Application.HookMainWindow(..) aufrufst und dort deinen eigenen Hook setzt.
Beispiel wäre ungefähr so:
Delphi-Quellcode:
[...]
Application.HookMainWindow(myApp.WndProcHook);
[...]
function TMyApp.WndProcHook( var message: TMessage): Boolean;
begin
Result := False;
case message.Msg of
WM_QueryEndSession: begin
Result := True; // Wird in Vcl.Forms nicht weiter abgearbeitet
(...) // z.B. an Application.MainForm weiterleiten...
end;
end;
end;
Hier wird WM_QueryEndSession nie angesprungen. Warum weiß ich nicht... Die WndProcHook wir ausgeführt. Beendet wird das Programm trotzdem.
|