на Delphi 7 сообщение WM_QUERYENDSESSION уже вызывает событие OnCloseQuery:
Код:
TCustomForm = class(TScrollingWinControl)
private
procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
...
procedure TCustomForm.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
Message.Result := Integer(CloseQuery and CallTerminateProcs);
end;
т.е. запретить программе перезагрузку ОС можно 2-мя способами:
1. обработать WM_QUERYENDSESSION:
Код:
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
Message.Result:=0;
end;
2. обработать OnCloseQuery:
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=False;
end;
2-ой способ по понятной причине не очень хорош