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

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

Сообщение о закрытии от Винды. [D7, XP]


vain ©   (2006-12-28 14:32:00) 

Проблема такая. Полжил, я, значит иконку в трей.

NID.uCallbackMessage:= WM_TRAYICON;
NID.Wnd:= AllocateHWnd(TrayHandler);
NID.uFlags:= NID.uFlags or NIF_MESSAGE;
Shell_NotifyIcon(NIM_ADD, @NID);

Где
procedure TrayHandler (var Message: TMessage);
begin
If Message.Msg= WM_TRAYICON
  Then begin
          ...
          end;
end;

Тогда TrayHandler ловит сообщения не только от иконки в трее, насколько я понимаю. Дело в том, что при выходе из системы, программа не закрывается и выход отменяется. Как быть? Подскажите, пжл.


vain   (2006-12-28 16:08:00) [1]


> Alarm ©   (28.12.06 16:07) [12]
>
> >vain ©   (28.12.06 14:32)
> Иногда следует пользоваться поиском и просматривать сообщения
> на форуме:(
> Хотя бы недавние
> http://www.delphimaster.ru/cgi-bin/forum.pl?id=1167137066&n=18

Тоже спасибо, похоже, то, что надо.


Alarm   (2006-12-28 16:07:00) [2]

>vain ©   (28.12.06 14:32)
Иногда следует пользоваться поиском и просматривать сообщения на форуме:(
Хотя бы недавние
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1167137066&n=18


vain   (2006-12-28 15:58:00) [3]


> Elen ©   (28.12.06 15:53) [10]
>
>
> > Где?
>
> В обработчике  WM_QUERYENDSESSION. Можеш еще словить  WM_ENDSESSION,
>  кстати. А вообще почитай SDK там написано про это.

Благодарствую величественно - пошел читать.


Elen   (2006-12-28 15:53:00) [4]


> Где?

В обработчике  WM_QUERYENDSESSION. Можеш еще словить  WM_ENDSESSION, кстати. А вообще почитай SDK там написано про это.


vain   (2006-12-28 15:45:00) [5]


>
> Странный случай. А result:=true стоит?
>

Где?


Elen   (2006-12-28 15:44:00) [6]


> тепеь при выходе закрываются все приложения, включая мое.
> .. и все

Странный случай. А result:=trueстоит?


vain   (2006-12-28 15:40:00) [7]

Поймал, блин...
Поставил на него Application.Terminate, но тепеь при выходе закрываются все приложения, включая мое... и все. А чтобы выйти, надо еще раз выйти.


vain   (2006-12-28 15:34:00) [8]


> Elen ©   (28.12.06 15:29) [5]
>
>
> > Как бороться?
>
> Ловить другие сообщения. Например WM_QUERYENDSESSION
>


Нет, только это.

procedure TrayHandler (var Message: TMessage);
begin
If Message.Msg= WM_TRAYICON
 Then begin
         ...
         end;
end;


...Хм, а попробую-ка я WM_QUERYENDSESSION поймать.


Elen   (2006-12-28 15:29:00) [9]


> Как бороться?

Ловить другие сообщения. Например WM_QUERYENDSESSION


vain   (2006-12-28 15:18:00) [10]


> А что такого твоя прога делает, что может мешать винде выходить?

Вроде, ничего. А что такое может делать прога, чтобы мешать винде выйти?


Elen   (2006-12-28 15:16:00) [11]


>  при выходе из системы, программа не закрывается и выход
> отменяется

А что такого твоя прога делает, что может мешать винде выходить?


vain   (2006-12-28 15:16:00) [12]


> На закрытие формы убивайте иконку

Это я и так делаю.
Мне кажется, что все сообщения кроме WM_TRAYICON игнорируются, в том числе, и сообщение от винды, которое она посылает при выходе. Так? Как бороться?


Ыеууз   (2006-12-28 15:04:00) [13]

На закрытие формы убивайте иконку


Наверх

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