我一直很想知道我是否可以通过C#应用程序显示,隐藏或更改由其他应用程序创建的NotifyIcon。

有人可以发一个如何做到这一点的例子吗? :)

有帮助吗?

解决方案

要修改系统托盘中的图标,您可以使用 Shell_NotifyIcon Win32 API( P / Invoke声明)。图标与窗口句柄和id相关联。这意味着要修改或隐藏其他程序的图标,您需要知道该应用程序用于注册它的窗口和ID。您可以通过枚举该过程的所有窗口并使用每个句柄和每个数字在0到5000之间进行调用来强制它,但是您成功的机会非常小。

其他提示

您可以挂钩SystemTray窗口本身以拦截所有Shell_NotifyIcon()请求。然后,您将知道为每个图标注册的确切HWND和ID。可以通过任何搜索引擎找到详细信息。

除非其他应用程序公开某些公共方法,或者您尝试使用反射,否则我什么都不知道,但我甚至不确定您是否可以在正在运行的进程中执行此操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top