Карта сайтаСсылкиКонтакты

Хостинг


Как предотвратить выход из Windows

PDF Печать
Статьи

Перед тем, как завершить работу, Windows посылает сообщение WM_QUERYENDSESSION всем открытым приложениям. Для обнаружения (и для того, чтобы не допустить отключение), мы должны поставить обработчик на это сообщение. Поместите это определение в разделе Private основного модуля:


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;

 

Добавить комментарий


Защитный код
Обновить