Форум: "Система";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Внизкак заставить программу перехватывать сообщение о перезагрузке, Найти похожие ветки
← →
kryworut (2003-12-09 15:22) [0]как заставить программу перехватывать сообщение о перезагрузке, выключении, завершении сеанса?
Если мможнапример :)
← →
kryworut (2003-12-09 16:35) [1]Как правильно перехватить сообщение WM_QUERYENDSESSION если можна с примером
← →
Тимохов (2003-12-09 16:40) [2]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-11 09:19) [3]Но если я хочу знать о перегрузке, но не мешать ей то возвращать я должен False или True?
← →
kryworut (2003-12-11 10:02) [4]И еще один вопрос, как происходит перезагрузка:
- система посылает всем приложениям сообщение о перезагрузке
вопрос - программа отдает системе ответ дает ли она разрешение на перезагрузку.
пример
PROCEDURE TForm_Main.WMQueryEndSession(var Message: TWMQueryEndSession);
BEGIN
Message.Result := Integer(False);
Halt;
END;
У меня программа выходит но комп не выключается, почему.
← →
Тимохов (2003-12-11 12:33) [5]Надо делать так (см. 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 12:57) [6]Попробуйте на форму поставить Tnmudp в инспекторе обектов присвоить propertis какие нибудь значения скомпилировать прогу и запустить, она не позволит выключить комп, сначала надо ее выключить, а уж потом комп. мне так не подходит. я пробовал
PROCEDURE TForm_Main.WMQueryEndSession(var Message: TWMQueryEndSession);
BEGIN
Message.Result := Integer(true);
Halt;
END;
при выключении прога завершает работу, но комп не выключается, надо еще раз "Пуск/Завершение работы/..."
← →
Тимохов (2003-12-11 13:00) [7]блин, halp убери, написал же ведь!
← →
MV (2003-12-11 15:17) [8]WM_SYSTEMPOWERBUTTONWASPRESSED
или
WM_SYSTEMRESETBUTTONWASPRESSED
← →
Тимохов (2003-12-11 15:25) [9]то мv
Это не совсем то, что ему нужно. Ему более подходит то, что описано в http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/wm_queryendsession.asp.
← →
MV (2003-12-11 15:31) [10]Зато мой вариант позволяет перехватить прерывание на нажатие кнопок на системном блоке.
← →
Тимохов (2003-12-11 15:35) [11]Но это все-таки совершенно другая задача.
Ладно, ИМХО автору вопроса уже не интересен ответ.
Предлагаю забить на вопрос.
← →
kryworut (2003-12-11 19:30) [12]Ответ ОЧЕНЬ интересен но у меня подключение через модем, и после обеда не смог связаться занятая линия :)
← →
kryworut (2003-12-11 20:09) [13]Сейчас уже пишу из дома :)
← →
kryworut (2003-12-12 09:33) [14]Извините, что я пропал после обеда не мог связаться с интернетом.
:)
← →
kryworut (2003-12-15 11:41) [15]Если кто знает, как сделать так чтобы программа с NMUDP1 выключалась при завершении работы системы (пуск / завершение...)
посоветуйте как это сделать.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c