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