Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приостановка завершения Windows [D5, D6, D7, NT4]


Lagrima_JN ©   (2006-06-20 12:45:00) 

Здравствуйте.
Подскажите пожалуйста, как с помощью API функций приостановить завершение работы windows, и затем (в зависимости от каких либо условий), либо продолжить выключение, либо его отменить.
Спасибо.


Германн   (2006-06-22 03:19:00) [1]


> Отмена завершения win, как я понимаю - это не дать ей выключиться,
>  и прибить работающее (выполняющее что-то критичное) приложение.
>

А дальше что? Имхо, многое уже завершено/прибито.
Ну да. Можно поиграть в "стандартную игрушку".
А смысл?


Дмитрий Белькевич   (2006-06-22 01:58:00) [2]

Отмена завершения win, как я понимаю - это не дать ей выключиться, и прибить работающее (выполняющее что-то критичное) приложение.


Германн   (2006-06-21 02:35:00) [3]


> Дмитрий Белькевич ©   (21.06.06 02:17) [6]
>
> >далеко не первым
> ну и пусть - главное, его висеть останеться, остальные пускай
> сами о себе заботяться, если им нужно.


Так то оно так, но
>  либо продолжить выключение, либо его отменить.
- первое либобудет чувствовать себя прекрасно, но второе - увы. :-(
То бишь нет способа вернуться в то же самоесостояние, которое было перед тем, когда кто-то/что-то инициализировало процесс завершения Windows. А именно так я понял смысл "отмены завершения Windows".


Дмитрий Белькевич   (2006-06-21 02:17:00) [4]

>далеко не первым
ну и пусть - главное, его висеть останеться, остальные пускай сами о себе заботяться, если им нужно.


ZeroDivide   (2006-06-20 16:25:00) [5]

Как:

Написать перехватчик вызова API функции ExitWindowsEx!


ZeroDivide   (2006-06-20 16:22:00) [6]

Никак.

WM_QUERYENDSESSION получат все приложения и закроются и очень вероятно, что твое приложение получит WM_QUERYENDSESSION далеко не первым.


Lagrima_JN   (2006-06-20 13:17:00) [7]

Вернее наоборот

procedure TfrmMain.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
if MessageDlg('Продолжить выключение?',
              mtConfirmation,
              [mbYes,mbNo], 0) = mrYes then
  Msg.Result := 0
else
  Msg.Result := 1;
end;

но сути это не меняет, и при нажатии на No и на Yes компьютер выключается.


Lagrima_JN   (2006-06-20 13:11:00) [8]

Пробовал

procedure TfrmMain.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
 if MessageDlg('Продолжить выключение?',
               mtConfirmation,
               [mbYes,mbNo], 0) = mrNo then
   Msg.Result := 0
 else
   Msg.Result := 1;
end;

все равно выключается.


Dmitrij_K   (2006-06-20 12:58:00) [9]

Первое что приходит на ум WM_QUERYENDSESSION


Наверх

Титульная страница Поиск, карта сайта Написать письмо