Das sieht schon mal ganz gut aus, es tritt aber ein seltsamer Fehler auf. Ich habe es nun so gemacht:
Delphi-Quellcode:
function TForm1.WMEndSession(var Message: TMessage):Boolean;
begin
if (Message.Msg=WM_ENDSESSION) and TWMEndSession(Message).EndSession then
begin
SessionEnd := True; // diese kann dann ausgewertet werden
end;
Result:=False;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
showmessage(inttostr(Integer(SessionEnd)));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(WMEndSession);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Application.UnhookMainWindow(WMEndSession);
end;
Wenn ich die Anwendung normal über "X" beende, kommt die Meldung 0, also alles ok.
Wenn ich nun aber zB. abmelde, kommt überhauptkeine Message (weder 0 noch 1), was ja nicht sein kann, denn ich habe in der Showmessage ja was stehen!?