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;