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

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

Отлов сообщения о повторном выводе иконки


Piter ©   (2004-10-19 01:29:00) 

Известно, что при перезапуске explorer исчезают иконки из TaskBar'а, при этом приложениям, у которых были иконки, посылается сообщение с просьбой заново вывести иконки. Какое это сообщение?


Михан   (2004-10-27 08:03:00) [1]

С procedure DefaultHandler(var Message); override;
вместо procedure DefaultHandler(var Msg : TMessage);
все заработало.
GuAV спасибо.
Пример grom тоже работает.
Спасибо всем.


GuAV   (2004-10-26 21:13:00) [2]

Михан   (26.10.04 14:13) [12]
procedure DefaultHandler(var Msg : TMessage);


На этой строке никаких варниногв не возникает ?
Если нет то они отключены и видимо напрасно.

procedure DefaultHandler(var Message); override;


grom   (2004-10-26 19:42:00) [3]

http://delphi.vitpc.com/asp/answer.asp?IDAnswer=26312


Михан   (2004-10-26 14:13:00) [4]

Ну никак неполучается  отловить момент когда происходит перезагрузка Explorer'
Делаю так

unit USysTray;
interface

uses
Windows,Messages,SysUtils,Variants, Classes, Graphics, Controls, Forms,
ShellAPI, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)

 procedure FormDestroy(Sender: TObject);
 procedure FormCreate(Sender: TObject);

private{ Private declarations }
 procedure DefaultHandler(var Msg : TMessage);

public{ Public declarations }

end;

var Form1: TForm1;
NID: TNotifyIconData;
WM_TASKBARCREATED: Cardinal;

implementation

{$R *.dfm}

procedure IconADD;
begin
with NID do begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Form1.Handle;
  uId := 1;
  uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  hIcon := Application.Icon.Handle;
  szTip :='SysTray';
end;
Shell_NotifyIcon(NIM_ADD, @NID);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WM_TASKBARCREATED := RegisterWindowMessage('TaskbarCreated');
IconADD;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @NID);
end;

procedure TForm1.DefaultHandler(var Msg :TMessage);
begin
if Msg.Msg = WM_TASKBARCREATED then IconADD;
end;

end.

Но почему то когда происходит перезагрузка Explorer' в procedure TForm1.DefaultHandler(var Msg :TMessage); ничего не пороисходит.
Помогите.
Очень нужна ваша помощь.


abc   (2004-10-25 19:09:00) [5]

Михан   (24.10.04 17:06) [7]
A кусок кода приведите пожалуста
Вот отсюда http://www.delphimaster.ru/cgi-bin/news.pl?showpage=26
скачай компонент CoolTrayIcon v. 4.1.1 (317Kb)
разломай его и копируй в свою программу
WM_TASKBARCREATED := RegisterWindowMessage('TaskbarCreated');
и всё что с зтим связано.
Там всё это есть.


GuAV   (2004-10-25 00:07:00) [6]

Михан   (24.10.04 21:20) [9]
Тоже не понял ответа.

Следует читать в MSDN про RegisterWindowMessage
И про The Taskbar:
http://search.microsoft.com/search/results.aspx?qu=TaskbarCreated&View=msdn&st=b&c=0&s=1&swc=0
в Taskbar Creation Notification это описано с примером.


Михан   (2004-10-24 21:20:00) [7]

GuAV ©   (19.10.04 02:15) [1] я смотрел
Но никак неполучается отловить момент когда explorer загружается


Nick Denry   (2004-10-24 21:01:00) [8]

2Михан   (24.10.04 17:06) [7]

см. GuAV ©   (19.10.04 02:15) [1]


Михан   (2004-10-24 17:06:00) [9]

регистрируешь сообщение, и добавляешь его в обработку сообщений.
A кусок кода приведите пожалуста


Piter   (2004-10-19 21:57:00) [10]

Да, стормозил. Прошу прощения


Nick Denry   (2004-10-19 15:16:00) [11]

2Игорь Шевченко ©   (19.10.04 10:51) [4]

Это ты не понял ответа

Класс %)

Piter ©   (19.10.04 10:39) [3]

Внесу свои пять копееек - регистрируешь сообщение, и добавляешь его в обработку сообщений. Это сообщение посылается тогда, когда explorer загружается, т.е. предположительно перд этим он падает, -> вывод - необходимо заново поместить значок в трей.


Игорь Шевченко   (2004-10-19 10:51:00) [12]

Piter ©   (19.10.04 10:39) [3]

Это ты не понял ответа и не хочешь читать MSDN или Google


Piter   (2004-10-19 10:39:00) [13]

GuAV ©   (19.10.04 2:15) [1]
RegisterWindowMessage('TaskbarCreated')


а при чем здесь регистрация нового сообщения? Может, ты не понял вопроса?


GuAV   (2004-10-19 02:16:00) [14]

зы А мне больше нравится видеть MF на таскбаре там же где и раньше ан не где часики.


GuAV   (2004-10-19 02:15:00) [15]

RegisterWindowMessage('TaskbarCreated')


Наверх

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