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

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

WM_QUERYENDSESSION [D5, NT4, Win2k, WinXP]


Страницы:   1 2

Lord Warlock ©   (2003-09-18 09:29:00) 

Я видел ветки по этой теме, но их уже потерли, Поэтому повторюсь.

Проблема следующего плана. При завершении работы или сеанса Windows моя программа, висящая в трее останавливает этот процесс и не закрывается сама. Исследования показали что программа без
окна (активного или нет) не получает сообщение WM_QUERYENDSESSION, но получает сообщение WM_ENDSESSION, которое связано с предыдущим сообщением параметром WParam. Туда поступает результат отработки WM_QUERYENDSESSION. В моем случае это 0 (или False). Соответственно это останавливает процесс отключения компьютера.

И еще, в файле проекта есть такая строчка:
Application.ShowMainForm:=False;
Application.Run;
те главная форма все время работы программы невидима. Это к сожалению является необходимым условием.
Настройки и управление программой делаются с помощью всплывающего меню значка в трее.

Какие будут мнения?


Alex Konshin   (2003-09-18 09:53:00) [21]

Ставь флаг в обработчике WMQueryEndSession и потом проверяй его в FormCloseQuery. Смысл флага - не задавать вопрос о завершении, если он установлен в True.

procedure TfmToolBar.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
bQuiteClose = true; // <---
Message.Result := Integer(CallTerminateProcs);
Application.Terminate;
end;


Страницы:   1 2

Наверх

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