![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать Hook на выключение компьютера [D5, D6, Win95/98, NT4, Win2k, WinXP]
Sergey N © (2004-04-01 11:46:00)Доброе время суток!
Задача: Создать программку, перехватывающую сообщение о выключении/перезагрузке машины и в зависимости от решения пользователя либо продолжить данную операцию, либо просто ее игнорировать.
Понимаю, что это делается с помощью SetWindowsHookEx, но не знаю как ее применить. Либо подменять функцию ExitWindow, или вешаться на какое-то сообщение.. Как подойти?
Может есть скелет программы у кого?
Спасибо все отреагировавшим!
Sergey N (2004-04-02 08:21:00) [21]to sir John: Если я не ошибаюсь, то ето нельзя сделать в экзешнике, нуно внедрять DLL в другие адрессные пространства..
to all: Может тогда по порядку начнем? Есть API ExitWindowEx(). Как она работает, какие сообщения посылает (если посылает), и как ее перехватить, если она вызывается в каком-то процессе в системе?
Wiz@rd (2004-04-01 23:45:00) [22]У решета все дыры не закроешь
Alexander666 (2004-04-01 19:06:00) [23]Собственно, можно перехватить функцию NtSystemShutdown
VMcL (2004-04-01 18:36:00) [24]2 [4]
WM_QUERYENDSESSION, а не WM_ENDSESSION. И то см. [5].
Wiz@rd (2004-04-01 18:31:00) [25]Ето не спасёт даже от такой ламеской вещи как EWX_FORCE, не говоря уж об NtSystemShutdown, или тем более о записи в регистры из Ring0
sir John (2004-04-01 17:15:00) [26]Может быть это поможет? Для того, чтобы определить выключение/перезагрузку ОС можно ловить WM_EndSession сообщение
type
TForm1 = class(TForm)
private
procedure WMEndSession(var Msg: TWMEndSession); message WM_ENDSESSION;
public
end;
implementation
{$R *.DFM}
procedure TForm1.WMEndSession(var Msg: TWMEndSession);
begin
if Msg.EndSession = True then
ShowMessage('Windows is shutting down!');
inherited;
end;
BiN (2004-04-01 17:03:00) [27]Понимаю, что это делается с помощью SetWindowsHookEx, но не знаю как ее применить
На этом сайте есть статья на эту тему
Sergey N (2004-04-01 16:55:00) [28]Спасибо за совет.. Если бы смог по нему разобраться, то и не обращался бы..
VMcL (2004-04-01 15:54:00) [29]см. GINA @ http://msdn.microsoft.com/