![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как заставить программу перехватывать сообщение о перезагрузке, [D5, Win95/98, NT4, Win2k]
kryworut © (2003-12-09 15:22:00)
как заставить программу перехватывать сообщение о перезагрузке, выключении, завершении сеанса?
Если мможнапример :)
kryworut (2003-12-15 11:41:00) [1]
Если кто знает, как сделать так чтобы программа с NMUDP1 выключалась при завершении работы системы (пуск / завершение...)
посоветуйте как это сделать.
kryworut (2003-12-12 09:33:00) [2]
Извините, что я пропал после обеда не мог связаться с интернетом.
:)
kryworut (2003-12-11 20:09:00) [3]
Сейчас уже пишу из дома :)
kryworut (2003-12-11 19:30:00) [4]
Ответ ОЧЕНЬ интересен но у меня подключение через модем, и после обеда не смог связаться занятая линия :)
Тимохов (2003-12-11 15:35:00) [5]
Но это все-таки совершенно другая задача.
Ладно, ИМХО автору вопроса уже не интересен ответ.
Предлагаю забить на вопрос.
MV (2003-12-11 15:31:00) [6]
Зато мой вариант позволяет перехватить прерывание на нажатие кнопок на системном блоке.
Тимохов (2003-12-11 15:25:00) [7]
то мv
Это не совсем то, что ему нужно. Ему более подходит то, что описано в http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/wm_queryendsession.asp.
MV (2003-12-11 15:17:00) [8]
WM_SYSTEMPOWERBUTTONWASPRESSED
или
WM_SYSTEMRESETBUTTONWASPRESSED
Тимохов (2003-12-11 13:00:00) [9]
блин, halp убери, написал же ведь!
kryworut (2003-12-11 12:57:00) [10]
Попробуйте на форму поставить Tnmudp в инспекторе обектов присвоить propertis какие нибудь значения скомпилировать прогу и запустить, она не позволит выключить комп, сначала надо ее выключить, а уж потом комп. мне так не подходит. я пробовал
PROCEDURE TForm_Main.WMQueryEndSession(var Message: TWMQueryEndSession);
BEGIN
Message.Result := Integer(true);
Halt;
END;
при выключении прога завершает работу, но комп не выключается, надо еще раз "Пуск/Завершение работы/..."
Тимохов (2003-12-11 12:33:00) [11]
Надо делать так (см. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/wm_queryendsession.asp)
PROCEDURE TForm_Main.WMQueryEndSession(var Message: TWMQueryEndSession);
BEGIN
Message.Result := Integer(true);
END;
kryworut (2003-12-11 10:02:00) [12]
И еще один вопрос, как происходит перезагрузка:
- система посылает всем приложениям сообщение о перезагрузке
вопрос - программа отдает системе ответ дает ли она разрешение на перезагрузку.
пример
PROCEDURE TForm_Main.WMQueryEndSession(var Message: TWMQueryEndSession);
BEGIN
Message.Result := Integer(False);
Halt;
END;
У меня программа выходит но комп не выключается, почему.
kryworut (2003-12-11 09:19:00) [13]
Но если я хочу знать о перегрузке, но не мешать ей то возвращать я должен False или True?
Тимохов (2003-12-09 16:40:00) [14]
procedure WMLPOWERBROADCAST(var Message: TMessage); message WM_POWERBROADCAST;
procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
CONST
PBT_APMQUERYSUSPEND = 0;
PROCEDURE TForm_Main.WMLPOWERBROADCAST(var Message: TMessage);
BEGIN
// Это типа не дать компу заснуть. Просто у меня это вместе было с WM_QUERYENDSESSION, потому и засунул тоже сюда
if Message.wParam = PBT_APMQUERYSUSPEND then
Message.Result := BROADCAST_QUERY_DENY;
END;
PROCEDURE TForm_Main.WMQueryEndSession(var Message: TWMQueryEndSession);
BEGIN
Message.Result := Integer(False);
END;
kryworut (2003-12-09 16:35:00) [15]
Как правильно перехватить сообщение WM_QUERYENDSESSION если можна с примером