Изменить поведение NotifyIcon с помощью стороннего приложения
Мне всегда было любопытно посмотреть, смогу ли я показать, скрыть или изменить NotifyIcon, созданный другим приложением через приложение C#.
Может ли кто-нибудь опубликовать пример того, как это сделать?:)
3 ответа
Чтобы изменить значки в systray, вы можете использовать Shell_NotifyIcon Win32 API (объявление P/Invoke). Значки связаны с дескриптором окна и идентификатором. Это означает, что для изменения или скрытия значка другой программы вам необходимо знать окно и идентификатор, используемые этим приложением для его регистрации. Возможно, вам удастся перебрать его, перечислив все окна для этого процесса и сделав вызовы, например, с каждым дескриптором и каждым числом от 0 до 5000 тысяч, но ваши шансы на успех очень малы.
Вы можете подключить само окно SystemTray для перехвата всех запросов Shell_NotifyIcon(). Затем вы будете знать точные HWND и идентификаторы, которые зарегистрированы для каждого значка. Подробности можно узнать через любую поисковую систему.
Я ничего не знаю, если только это другое приложение не предоставляет какой-либо публичный метод или вы не пытаетесь использовать рефлексию, но я даже не уверен, что вы можете сделать это в работающем процессе.