TL;DR - Spy++工具是如何真正构建其过程列表的?
阶段
我们有一个MFC桌面应用程序(运行在Windows上),因为它不再对任何用户输入做出反应。然而,当通过alt选项卡切换到它时,它会被重新绘制。(它确实接收WM_SETFOCUS、WM_ACTIVATE等。它显然没有收到任何鼠标或键盘消息。)
由于应用程序挂在一些模糊,我们拉了几个进程转储,但这些都没有什么帮助到目前为止。输入:
Spy++
我们使用Spy++查找我上面给出的有关该应用程序似乎正在处理的窗口消息的信息。我们通过打开窗口视图来做到这一点

并选择我们的应用程序窗口,并在Messages属性中选择Windows of same process和Messages to View:Select All。
但是,我们首先尝试通过打开过程视图来查看此过程的所有消息。

在Spy++和中,我们的应用程序没有显示在这个进程列表中。在程序正常运行的另一台PC上进行交叉检查,进程通常也会显示在Spy++的进程列表中。
可以从间谍++的Processes 中没有显示该进程,但是该应用的主窗口显示在Windows中这一事实可以推断出该应用程序的任何情况。为什么在Spy++的Processes中没有显示一个主窗口的进程?
此进程列在“任务管理器”和Visual 2005的“附加进程”窗口中。那么这些工具显然使用了一种不同于Spy++的方法来列出进程.?
该应用程序当前挂起的系统是Windows SP2系统,我们使用了Visual 2005附带的Spy++实用程序。
这种行为确实会偶尔出现,但只有在应用程序运行了几天之后才会发生!
发布于 2011-11-25 14:06:12
运行Vista还是以后?您的流程可能被提升,而Spy++则没有。更新版本的Spy++需要提升。所以,尝试显式地提升Spy++,看看这是否有帮助。
发布于 2011-11-18 10:08:35
是的,当然可以从这推断出一些事情。在这种情况下,不要太认真地对待我说的任何事情,我得去看看代码。但是我相信Spy会运行并查看EnumProcesses API。(http://msdn.microsoft.com/en-us/library/ms682629.aspx)
所以,如果你的流程没有出现.人力资源管理
但是,它工作的系统和不工作的系统有什么不同呢?
发布于 2021-06-01 19:24:46
Spy++需要禁用注册表中的以下两个值(0)才能显示进程/线程列表:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
HKLM\System\CurrentControlSet\Services\PerfProc\Performance
Disable Performance Counters -> either 0 or not present想弄清楚它为什么拒绝展示它们。这是个坏笑话--这个调试器需要一个调试器才能让它正常工作!并不是说WinDBG会显示任何有意义的信息,MS甚至没有在他们的符号服务器pfft上提供一个符号文件。
无论如何,它可能不会显示禁用其性能计数器的进程,因为我认为可以根据不同的情况来设置它,至少对于服务是这样的,比如:
HKLM\SYSTEM\CurrentControlSet\Services\.NET CLR Networking\Performance
Disable Performance Counters因此,它基本上总是“性能”子项的值。所有这些都是无文档化的,它使用了先进的32. All函数,如"PerfRegQueryValue“和”PerfRegQueryInfoKey“.别问我。
https://stackoverflow.com/questions/8180527
复制相似问题