Изменить поведение NotifyIcon с помощью стороннего приложения

StackOverflow https://stackoverflow.com/questions/249319

  •  05-07-2019
  •  | 
  •  

Вопрос

Мне всегда было любопытно посмотреть, могу ли я показать, скрыть или изменить NotifyIcon, созданный другим приложением через приложение C #.

Может кто-нибудь опубликовать пример того, как это сделать? :)

Это было полезно?

Решение

Чтобы изменить значки в systray, вы можете использовать Shell_NotifyIcon Win32 API ( объявление P / Invoke ). Значки связаны с дескриптором окна и идентификатором. Это означает, что для изменения или скрытия значка другой программы вам необходимо знать окно и идентификатор, используемый этим приложением для его регистрации. Возможно, вам удастся перебрать его, перечислив все окна для этого процесса и сделав вызовы, например, с каждым дескриптором и каждым числом от 0 до 5000 тысяч, но ваши шансы на успех очень малы.

Другие советы

Вы можете перехватить само окно SystemTray, чтобы перехватывать все запросы Shell_NotifyIcon (). Затем вы будете знать точные HWND и идентификаторы, которые зарегистрированы для каждого значка. Подробности можно узнать через любую поисковую систему.

Я ничего не знаю, если только другое приложение не предоставляет какой-либо публичный метод или вы не пытаетесь использовать рефлексию, но я даже не уверен, что вы можете сделать это в работающем процессе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top