如何找到显示给定任务栏系统托盘图标的Windows进程?
答案 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。
...当然,这是一个黑客,依赖于随时可能发生变化的无证信息!