TL;DR - Spy++ 工具如何真正构建它的进程列表?
阶段
我们有一个挂起的 MFC 桌面应用程序(在 Windows XP 上运行),它不再对任何用户输入做出反应。但是,通过 alt-tab 切换到它时会重新绘制它。(它确实收到WM_SETFOCUS
,WM_ACTIVATE
等。它显然没有收到任何鼠标或键盘消息。)
由于该应用程序处于不确定状态,我们提取了一些进程转储,但到目前为止这些都没有什么帮助。进入:
间谍++
我们使用 Spy++ 来查找我上面提供的有关此应用程序似乎正在处理的窗口消息的信息。我们通过打开Windows 视图 并选择我们的应用程序窗口并在消息属性中选择
Windows of same process
和Messages to View
:来做到这一点Select All
。
但是,我们首先尝试通过打开Spy++的进程视图来查看此进程的所有消息,但 我们的应用程序未显示在此进程列表中。在应用程序正常运行的另一台 PC 上进行交叉检查,该进程也通常显示在 Spy++ 的进程列表中。
是否可以从 Spy++ 的 Process View 中未显示该进程,但该应用程序的主窗口显示在 Windows 视图中这一事实推断出有关行为不端的应用程序的任何信息。为什么具有可见主窗口的进程不会显示在 Spy++ 的进程视图中?
该进程列在任务管理器和 Visual Studio 2005 的“附加进程”窗口中。因此,这些工具显然使用与 Spy++ 不同的方法来列出进程...?
应用程序当前挂起的系统是 Windows XP SP2 系统,我们使用了 Visual Studio 2005 附带的 Spy++ 实用程序。
该行为偶尔会再次出现,但仅在应用程序运行几天后才会出现!