Как предотвратить выход из Windows
procedure WMQueryEndSession
(var Msg : TWMQueryEndSession) ;
message WM_QueryEndSession;
Кроме того, чтобы предотвратить закрытие Windows, поместить этот метод в части implementation модуля:
procedure TForm1.WMQueryEndSession
(var Msg : TWMQueryEndSession) ;
begin
if MessageDlg(Выйти из Windows ?',
mtConfirmation,
[mbYes,mbNo], 0) = mrNo then
Msg.Result := 0
else
Msg.Result := 1 ;
end;
Чтобы обнаружить Shutdown Windows, мы должны перехватить сообщение WM_ENDSESSION. Объявите процедуру обработки сообщений в разделе Private Вашей главной формы:
Procedure WMEndSession
(var Msg : TWMEndSession) ;
message WM_ENDSESSION;
Кроме этого, добавьте следующую процедуру в раздел implementation модуля:
procedure TForm1.WMEndSession
(var Msg : TWMEndSession) ;
begin
if Msg.EndSession = TRUE then
ShowMessage('Будет выполнен выход из Windows '
+ #10#13 + 'at ' + FormatDateTime('c', Now)) ;
inherited;
end;
Комментарии