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

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

Как узнать, есть ли в трее иконка чужого приложения? [D6, Win2k]


il ©   (2003-04-29 17:01:00) 

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


Cobalt   (2003-05-01 19:10:00) [1]

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


AlexandrRya   (2003-04-30 22:22:00) [2]

> Cobalt (30.04.03 16:12)

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

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


Cobalt   (2003-04-30 16:12:00) [3]

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


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

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


Cobalt   (2003-04-30 08:13:00) [5]

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


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

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

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

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


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

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


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


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

Вряд ли :)


Наверх

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