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