![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WM_QUERYENDSESSION [D5, NT4, Win2k, WinXP]
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;