![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приостановка завершения 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