Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.03;
Скачать: CL | DM;

Вниз

как заставить программу перехватывать сообщение о перезагрузке,   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
6-6178
RaPToR_1
2003-12-26 21:46
2004.03.03
ping


1-6101
BDRON
2004-02-20 18:33
2004.03.03
assignfile для CD


1-6121
Creator
2004-02-20 15:54
2004.03.03
Как зделать System процесс в ХР


14-6201
Cosinus
2004-02-11 18:27
2004.03.03
Интересно, это когда-нибудь надоест ? :))))


14-6200
nester
2004-02-08 19:46
2004.03.03
Ктонить юзал делфи 8 или 7 студио