Как да разберете дали в трея има икона на чуждо приложение

Уважаеми майстори! Моля, кажете ми как да направя subj. Просто трябва да проверя дали иконата е там или не. Знам манипулатора на прозореца, който обработва събитията в трея. Shell_NotifyIcon - Добавя, променя или премахва икона. Но има ли например функция, която да проверява наличието на икона от определен прозорец? Благодаря ви предварително

> Но има ли например функция, която проверява наличието на иконата > от конкретен прозорец?Едва ли :)

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

Мога да предложа метод, който в обикновените хора се нарича "През дупето" И така, трябва да знаем: 1. Дръжка за тава (HTray). Просто е. Трябва да намерим детето на прозореца TrayNotifyWnd на прозореца Shell_TrayWnd. 2. Window handle (HWnd) - обработка на съобщения от иконата (казвате, че знаете това).

След това направете следното: 1. Емулираме по някакъв начин (SendMessage?) движението на мишката по протежение на трея (тоест по HTray), започвайки от левия край надясно. 2. В този случай Explorer или друга обвивка ще изпрати съобщение Shell_NotifyIcon до прозореца HWnd. 3. Трябва да хванем това съобщение. (Например с помощта на кука). 4. Ако в резултат на стъпка 1 съобщението до прозореца Hwnd не е пристигнало, тогава няма икона :-(

----------------------- Съжалявам, но не знам за по-добър начин. ако се получи, пишете на сапуна, искам да го проверя, тъй като току-що измислих метод, но трябва да работи!

>Има ли икона на нечие приложение в трея?Хм, може би грешка? Майната ти икона? Има ли приложение - това е целта. и икони - те са за потребителите.

> Cobalt Икони, разбира се, те са за потребители, само ако можеше да мине с търсене на прозорец или процес, не бих се перчил така и не бих задавал такива екзотични въпроси. Факт е, че програмата, докато работи, може да създаде 2 различни икони в трея или може би не. Тук трябва да хвана създаването на конкретна икона. Отначало, разбира се, се опитах да намеря както прозореца, отговорен за процеса, който се отразява в иконата на тавата, така и процеса, но не се получи. Извращение на иконата - последен шанс

След това - просто прихващайки TrayNotificationArea - вие сте вградени в AP Explorer, задавате функцията си на този прозорец - и получавате всичко на сребърен поднос.

> Кобалт (30.04.03 16:12)

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

И че моят метод не е изпробван - май няма нищо сложно?

Прочетох отново публикацията на AlexandrRya (04/29/03 22:55) Напълно съм съгласен - може би точно така трябва да се направи.