哪个Windows进程显示给定的任务栏系统托盘图标?

如何find哪个Windows进程显示给定的任务栏系统托盘图标?

通过发送一个特殊的WM_COPYDATA消息到任务栏 , Shell_NotifyIcon工作,如果你注入到资源管理器和子类的任务栏,你可以捕获这个消息,你可以通过调用COPYDATAstruct.NOTIFYICONDATA.hwnd GetWindowThreadProcessId获得进程ID。

…当然,这是一个黑客攻击,依赖于可能在任何时候都会改变的无证信息!

我不相信这是可能的。 当然Spy ++报告通知区域是一个名为“用户推荐通知区域”的窗口。 此窗口最终以桌面窗口为准,与创建通知图标的过程没有明显关联。


那么,可能我的意思是可能没有诉诸如安德斯建议,这是毫无疑问可行的黑客,但不是我想象的OP正在寻找!

我刚刚意识到,在Windows 7中,“选择哪些图标和通知出现在任务栏”菜单在这里有所帮助。 通过右键单击任务栏找到它,转到“属性”,然后单击“通知区域”框架中的“自定义…”按钮。

该窗口中的每一行代表Windows资源管理器已经看到的任务栏图标。 在左边的两个rwos中,我相信最上面的一个是任务管理器中显示的进程的描述,最下面的是显示任务栏图标的窗口的窗口标题。

这将帮助我追踪我原来的问题! VisualSVN弹出一个'注册我! 尽管没有明显的VisualSVN进程正在运行,但系统托盘中仍然有一点麻烦。 最后我注意到,当我关闭Visual Studio时,这个烦人的窗口消失了,所以显然在Visual Studio中加载的VisualSVN加载项DLL正在创建nag窗口。