Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
5.928 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Herunterfahren verhindern, Programm nicht beenden

  Alt 23. Jun 2016, 12:38
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;
  Mit Zitat antworten Zitat