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

Вниз

Как узнать, есть ли в трее иконка чужого приложения?   Найти похожие ветки 

 
il   (2003-04-29 17:01) [0]

Уважаемые мастера!
Подскажите, плиз, как сделать subj.
Мне просто надо проверить, есть ли там иконка или нет. Хэндл окна, обрабатывающего события трея, я знаю.
Shell_NotifyIcon - добавляет, меняет или удаляет иконку. А вот есть ли, например, функция, проверяющая наличие иконки от определенного окна?
Заранее спасибо


 
Игорь Шевченко ©   (2003-04-29 17:33) [1]


> А вот есть ли, например, функция, проверяющая наличие иконки
> от определенного окна?

Вряд ли :)


 
il   (2003-04-29 17:42) [2]

Может, каким-то другим образом можно вычислить, что иконка от определенного окна висит в трее? SysTrayX ведь как-то с иконками работает - скрывает их, но совсем не удаляет, позволяет на них нажимать (из своего меню).
Мастера! Никто с такой проблемой не сталкивался?


 
AlexandrRya   (2003-04-29 22:55) [3]

Могу предложить метод, в простонародье называемый "Через жопу"
Итак, нам нужно знать:
1. Handle трея (HTray). Это просто. Надо найти окно TrayNotifyWnd дочернее окну Shell_TrayWnd.
2. Handle окна (HWnd)- обработчика сообщения от иконки (ты говоришь, что это известно).

Далее делаем так:
1. Эмулируем каким-либо образом (SendMessage ?) движение мыши вдоль трея (то есть вдоль HTray) начиная с левого края до правого.
2. При этом explorer или другой шелл пошлет окну HWnd сообщение Shell_NotifyIcon.
3. Это сообщение нам надо отловить. (Например с помощью хука).
4. Если же в результате выполнения пункта 1, сообщение окну Hwnd не пришло, значит ионки нету :-(

-----------------------
Sorry, но лучшего способа я не знаю. если получится, напиши на мыло, охота проверить, так как способ только что придумал, но работать должен!


 
Cobalt ©   (2003-04-30 08:13) [4]

> есть ли в трее иконка чужого приложения?
Хм, наверное, ошибка? Нахрена вам иконка? Вот есть ли приложение - вот это цель. а иконки - они для юзеров.


 
il   (2003-04-30 09:03) [5]

> Cobalt
Иконки, они, конечно, для юзеров, только если бы можно было обойтись поиском окна или процесса, я бы так не выпендривался и таких экзотических вопросов не задавал.
Дело в том, что прога, работая, может создать в трее 2 разные иконки, а может и не создать. Вот мне надо отловить создание конкретной иконки. Сначала я, конечно, пробовал находить и окно, отвечаючее за процесс, который отражается иконкой в трее, и процесс, но это не вышло. Изврат с иконкой - последний шанс


 
Cobalt ©   (2003-04-30 16:12) [6]

Тогда - только перехват TrayNotificationArea - внедряешься в АП Проводника, устанавливаешь свою функцию этому окну - и все получаешь как на блюдечке.


 
AlexandrRya   (2003-04-30 22:22) [7]

> Cobalt (30.04.03 16:12)

Можно и так, но надо быть уверенным, что программа, про иконку которой мы хотим узнать, грузится поже нашей, а, иначе, мы пропустм самое интересное :)

А что мой способ так и не пробовали - вроде и сложного ничего нет?


 
Cobalt ©   (2003-05-01 19:10) [8]

Перечитал пост AlexandrRya (29.04.03 22:55)
Совершенно согласен - пожалуй, именно так и надо делать.



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-7410
picaroon
2003-06-23 09:34
2003.07.03
Печать...


6-7584
Лана Розанова
2003-04-29 15:31
2003.07.03
Web


4-7768
Great_Lesh
2003-05-01 09:41
2003.07.03
Заголовочный файл CreateProcessWithLogonW


1-7421
manumba
2003-06-23 11:23
2003.07.03
Профессиональное использование ООП в Delphi.....литература


7-7737
Sniffer
2003-04-18 14:09
2003.07.03
Опять о Ctrl+Alt+Del, Alt+Tab...