Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
7-7743
Dimka
2003-04-22 18:20
2003.07.03
Возможноли получить доступ к буферу приема или передачи COM порта


3-7363
vlad1972
2003-06-11 10:37
2003.07.03
Таблица БД и визуальный компонент


3-7343
Sakses
2003-06-07 16:34
2003.07.03
параметры


1-7471
AlexTregubov
2003-06-20 16:08
2003.07.03
HtmlHelp


14-7593
Leo^Sun
2003-06-14 13:10
2003.07.03
Вывод на экран больших чисел





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский