habe nun herausgefunden, das Windows bzw. mein Programm nur auf die
WM_ENDSESSION reagiert anstatt wie ich überall gelesen auf WM_QUERYENDSESSION
Soweit so gut habe nun
Delphi-Quellcode:
procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;
procedure tmain_form.WMEndSession(var Msg:TWMEndSession);
begin
//Windows erlauben zu beenden
Msg.Result := 1;
//Programm schliessen
close;
inherited;
end;
Das funktioniert in so weit, dass das Programm beendet wird - aber Windows bricht dann zugleich auch den beenden vorgang ab und muss nochmal auf abmelden/neustarte klicken... also irgendwie immer noch keine Lösung ;-(
Vorsorglich habe ich nun aber auch das noch mit drinne
Delphi-Quellcode:
procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure tmain_form.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
//Windows erlauben zu beenden
Msg.Result := 1;
//Programm schliessen
close;
inherited;
end;