Вниз
Скачать: CL | DM;

Убрать чужую иконку из трея   Найти похожие ветки 

 
Zevsus ©   (2002-11-22 13:07) [0]

Здравствуйте!
Мне нужно убрать из трея чужую иконку.
делаю так:

procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
a: PNotifyIconData;
begin
//////////////////////////////////
//Нахожу хэндл нужного мне окна///
//////////////////////////////////
a.Wnd:=Wnd;
a.cbSize:=sizeof(NOTIFYICONDATA);
Shell_NotifyIcon(NIM_DELETE, a);
end;

не убирается :(


 
paul_shmakov ©   (2002-11-22 13:49) [1]

все верно, потому как еще и id нужно в структуре указать.
есть несколько вариантов решения.
1) (про этот способ я тут писал более подробно, так что где-то в архиве есть). когда вызывается Shell_NotifyIcon, в окно трея посылается сообщение WM_COPYDATA. можно перехватывать это сообщение. в качестве данных в WM_COPYDATA передается структура

TNIDMessage = packed record
Magic: DWord; // всегда равно $34753423
Message: DWord; // NIM_ADD, NIM_MODIFY или NIM_DELETE
NID: TNotifyIconDataW;
end;

на самом деле есть несколько версий этой структуры, которые отличаются типом поля NID (TNotifyIconDataA, TNotifyIconDataW, плюс существует 3 версии структуры TNotifyIconData). но для вашей задачи эта разница не важна, т.к. вам нужно поле TNotifyIconData.uID, а оно во всех версиях находится по одному и тому же смещению.

так вот, перехватывайте с помощью хуков эти сообщения, запоминайте пару hWnd и uID и вы сможете уирать и модифицировать чужие иконки.

по этому примеру Богдан Минич написал пример своего трея, правда написал плохо и криво. все мои пожелания довести его до ума он проигнорировал :) но все равно, взгляните:
http://www.delphikingdom.com/treasury/systray.htm
обязательно комментарии еще прочтите.

2) Nick Repin нашел способ перечислять иконки в трее.
http://skyscraper.fortunecity.com/gigo/311/winprog.html#strayenum



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
7-37392
Ricky-Ticky-Tavy
2002-10-25 14:50
2003.01.13
Строковые идентификаторы винчестеров (или IDE-устройств)


3-36915
Slava_V
2002-12-17 15:53
2003.01.13
Помоготе с отчетом ...


1-37042
Шоломицкий
2003-01-02 17:10
2003.01.13
Вот на C++ не понимаю нифига! Пожалуйста помогите!


1-37073
Gamar
2003-01-03 12:35
2003.01.13
Имя переменой в другой переменной


1-37145
perov
2002-12-26 07:37
2003.01.13
полная загрузка компонента




   Наверх