我一直很好奇是否可以显示、隐藏或更改另一个应用程序通过 C# 应用程序创建的 NotifyIcon。
有人可以发布一个关于如何做到这一点的例子吗?:)
要修改系统托盘中的图标,您可以使用Shell_NotifyIcon Win32 API(P/Invoke 声明)。这些图标与一个窗口句柄和一个 ID 相关联。这意味着要修改或隐藏另一个程序的图标,您需要知道该应用程序用于注册它的窗口和 id。例如,您可以通过枚举该进程的所有窗口并使用每个句柄和 0 到 500 万之间的每个数字进行调用来强制它,但是您成功的机会非常渺茫。
您可以挂钩 SystemTray 窗口本身以拦截所有 Shell_NotifyIcon() 请求。然后您将知道为每个图标注册的确切 HWND 和 ID。可以通过任何搜索引擎找到详细信息。
我什么都不知道,除非其他应用程序公开了一些公共方法,或者您尝试使用反射,但我什至不确定您是否可以在正在运行的进程中做到这一点。