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

时间:2011-03-02 11:03:09

标签: windows debugging process taskbar

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

3 个答案:

答案 0 :(得分:2)

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

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

这会帮助我找出原来的问题! VisualSVN突然出现了“注册我!”尽管没有明显的VisualSVN进程运行,但系统托盘中的唠叨窗口。最后我注意到,当我关闭Visual Studio时,这个唠叨的窗口消失了,所以很明显Visual Studio中加载的VisualSVN加载项DLL正在创建唠叨窗口。

答案 1 :(得分:1)

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


嗯,可能我的意思是可能不使用Anders建议的黑客,这无疑是可行的,但不是我想象的OP正在寻找的!

答案 2 :(得分:1)

Shell_NotifyIcon通过发送一个特殊的WM_COPYDATA message to the taskbar来工作,如果你向资源管理器和子类注入你可以捕获此消息的任务栏,那么你可以通过在COPYDATAstruct.NOTIFYICONDATA.hwnd上调用GetWindowThreadProcessId来获取进程id。

...当然,这是一个黑客,依赖于随时可能发生变化的无证信息!