Как предотвратить выход из 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;
Комментарии