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

Вниз

Определение завершения работы Windows   Найти похожие ветки 

 
Woolen ©   (2002-03-09 14:54) [0]

Народ, спасайте! Срочно нужно! Горю! Не знаю, как определить, что Windows завершает работу. Ситуация примерно такая. В OnCloseQuery прога выдает запрос пользователю на завершение работы, но при завершении Windows OnCloseQuery тоже вызывается. Как сделать, чтобы пользователь мог отменить завершение приложения в случае, если он его сам закрываеть, и в тоже время, чтобы прога определяла, если происходит завершение работы Windows и не выдавала запроса при этом? Пишу прогу на D6 для всех виндов, начиная с NT4.0. Т.е. NT4.0, 98, 2000, Me, XP.
Заранее благодарен.


 
Anatoly Podgoretsky ©   (2002-03-09 15:00) [1]

Windows посылает сообщения WM_QUERYENDSESSION и затем WM_ENDSESSION вот и создай для них обработчики


 
Woolen ©   (2002-03-09 16:07) [2]

Спасибо! Только один вопрос. А OnCloseQuery случаем не происходит при приеме сообщения WM_QUERYENDSESSION? А то получится тоже самое и никакой разницы не будет.


 
Suntechnic ©   (2002-03-09 17:17) [3]

>Woolen © (09.03.02 16:07)
Происходит. Потому как Windows не прерывает процесс путём TerminateProcess, а пытается его завершить корректно. Ты можешь поступить слудующим образом. Объявить в классе главной формы флажок, который будет показываеть, что приложение закрывается из-за выгрузки Windows. По умолчанию установи его в FALSE. В событии OnCloseQuery проверяй его. Если флаг установлен, тогда не выдавай подтверждение закрытия, а если нет, тогда выдавай. Затем лови сообщение WM_QUERYENDSESSION и устанавливай этот флаг....


 
y-soft ©   (2002-03-09 22:45) [4]

>Пишу прогу на D6 для всех виндов, начиная с NT4.0. Т.е. NT4.0, >98, 2000, Me, XP.

Надо еще учесть, что в Win9X/Me и WinNT/2000/XP алгоритм посылки этих сообщений ОС (WM_QUERYENDSESSION, WM_ENDSESSION) разный. Кроме того в WinNT SP6A возникает неприятный глюк, если приложение отвечает на сообщение отрицательно (См MSDN Q245148)



Страницы: 1 вся ветка

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
3-39652
Rail
2002-04-17 13:58
2002.05.13
Чем отличается Deny и Revoke в MS SQL Server


1-39766
AndreyS
2002-04-28 11:22
2002.05.13
Как принудительно сделать рефреш окна.


1-39789
velk
2002-04-29 09:22
2002.05.13
Как работает функция Format?


6-39813
Hewlping
2002-03-01 18:01
2002.05.13
СРОЧНО!!


1-39701
ymin
2002-04-29 16:04
2002.05.13
Showmessage(‘Давление должно быть <’ +inttostr(int2*0.8));