Странно, а мне наооборот пришлось искать способ чтоб винда нормально закрывалась, т.к. прога не выгружалась и выключения не происходило совсем. Но если это надо, то попробуйте в главном варе (после паблик, но до implementation) объявить булёвку типа var CnClose: Boolean; и управлять её состоянием самостоятельно, ибо есть подозрение, что делфя принудительно (особенность системы:-) посылает разрешение на закрытие от себя, без участия исполняемой части. Тогда код немного преобразится:
Код:
procedure TForm2.WMQUERYENDSESSION(var Msg: TMessage);
begin
CnClose:= false;
Msg.Result:= 0;
end;
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= CnClose; // Вот здесь принудиловка, среде не отвертеться :)
end;
procedure TForm2.WMENDSESSION(var Msg: TMessage);
begin
CnClose:= false;
Msg.Result:=0;
end;
Ну и в ОнКриэйт CnClose:= false; Должно помочь.