Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

Как работать с WM_QUERYENDSESSION?   Найти похожие ветки 

 
ronyn   (2005-08-18 00:17) [0]

Как работать с WM_QUERYENDSESSION? ( ПРОГРАММА МИНИМИЗИРОВАНА В ТРЕЙ).Заранее благодарен.


 
Eraser ©   (2005-08-18 00:54) [1]

ronyn   (18.08.05 00:17)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/wm_queryendsession.asp


 
tesseract ©   (2005-08-18 18:02) [2]

Если есть объект Tapplication то Application.onMessage


 
Alex Konshin ©   (2005-08-19 14:06) [3]

Приблизительно так:


procedure TfmServerToolBar.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
 FQuietClose := True;
 Message.Result := Integer(CallTerminateProcs);
 Application.Terminate;
end;

procedure TfmServerToolBar.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if not FQuietClose then
 begin
   case Windows.MessageBox( Handle, PChar("Вы действительно хотите завершить ""+Caption+"" ?"), "Завершение",
     MB_YESNOCANCEL or MB_ICONQUESTION or MB_DEFBUTTON1 or MB_SETFOREGROUND or MB_APPLMODAL ) of
   IDYES:
     begin
       FQuietClose := True;
       CanClose := True;
     end;
   IDNO:
     begin
       CanClose := False;
       Application.Minimize;
     end;
   else
     CanClose := False;
     Exit;
   end;
 end;
end;


Я не случайно упомянул еще и обработчик OnCloseQuery, потому как обычно в таких приложениях он есть, а неверная логика при обработке WM_QUERYENDSESSION приведет к зависанию при shutdown.


 
tesseract ©   (2005-08-20 12:06) [4]

>> Я не случайно упомянул еще и обработчик OnCloseQuery
CloseQuery - запрос на закрытие окна, а не приложения, запрос на закрытие приложения WM_QUIT и WM_ENDSESSION (WM_QUERYENDSESSION просто запрос, можно вернуть 0, таким образом послать винду и она перестанет посылать больше подобные сообщения и не станет выключаться!)
WM_QUIT, обрабатывается Tapplication свой так просто не впихнёшь.
>>а неверная логика при обработке WM_QUERYENDSESSION приведет к зависанию при shutdown.
не к зависанию, а к насильному завершению  твоего процесса.


 
Alex Konshin ©   (2005-08-20 12:58) [5]

Плавали, знаем.

А ты попробуй по OnCloseQuery задавать вопрос на закрытие (что бывает в таких приложениях довольно часто) и не понимать в этом обработчике специально WM_QUERYENDSESSION. В зависимости от операционки получишь разные эффекты, вплоть до бесконечного shutdown.
Я уже точно не помню, давно это было, но вроде суть проблемы в том, что после получения WM_QUERYENDSESSION операционка уже не дает создавать новые окна, и, когда мы хотим задать этот самый вопрос, то он не появляется на экране, но приложение все равно продолжает ждать, когда же мы нажмем на нем Ok.


 
tesseract ©   (2005-08-22 09:46) [6]

>>WM_QUERYENDSESSION операционка уже не дает создавать новые окна,
Зависит от операционки /установленных патчей/ настроек реестра.
но чаще всего - реально бесконечный shutdown.



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

Форум: "WinAPI";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
9-1118343860
Ksander
2005-06-09 23:04
2005.10.23
игра


14-1127739516
Сказочник
2005-09-26 16:58
2005.10.23
Задачка


1-1128018956
Max[xx]
2005-09-29 22:35
2005.10.23
Сочетания клавишь срабатывают только в для главной формы


14-1128424715
Layner
2005-10-04 15:18
2005.10.23
Как включить в трее Ru/En.. (XP/Sp2)


5-1103879175
Anatoly
2004-12-24 12:06
2005.10.23
Свойство в инспекторе объектов меняется не сразу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский