Nur 'n paar Gedanken...
1. Schießt du dir bei <HIER> nicht selbst in den Hintern? Du bist doch schon im Close weil CloseQuery aufgerufen wurde.
Zitat von
Matze:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if AskForClose and (not MinimizeAtClose) then
begin
if Application.MessageBox('Programm beenden?', 'Hinweis', MB_YESNO) = IDYes then
begin
AskForClose := false;
MinimizeAtClose := false;
CanClose := true;
Application.MainForm.Close; // <--- HIER
end else
CanClose := false;
end;
end;
2. Reagiere nicht auf WM_QUERYENDSESSION sondern auf WM_ENDSESSION mit wParam<>0 -> Application.MainForm.Close oder Application.Terminate
3. Wenn das nichts hilft würde ich mir in WndProc einen Logger packen, der alle Fenstermeldungen mitschreibt. Dann weißt du mal, was so ein Windows Shutdown überhaupt an Meldungen verursacht.
Ansonsten wüsste ich nicht, was den Shutdown aufhalten sollte. Was klappt denn nicht, kommt die Rückfragebox?