Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как заставить программу перехватывать сообщение о перезагрузке, [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 если можна с примером


Наверх

Титульная страница Поиск, карта сайта Написать письмо