windows - Spy++ 如何构建它的进程列表?

标签 windows winapi mfc spy++ window-messages

TL;DR - Spy++ 工具如何真正构建其进程列表?

阶段

我们有一个 MFC 桌面应用程序(在 Windows XP 上运行)挂起,它不再对任何用户输入使用react。但是,当通过 alt-tab 切换到它时,它重绘了。 (它确实接收到 WM_SETFOCUSWM_ACTIVATE 等。它显然没有接收到任何鼠标或键盘消息。)

由于该应用程序处于某种不确定状态,我们拉取了一些进程转储,但到目前为止这些帮助不大。输入:

Spy++

我们使用 Spy++ 找到我上面提供的有关此应用程序似乎正在处理的窗口消息的信息。我们通过打开 Windows View 来做到这一点Windows View并选择我们的应用程序窗口,并在消息属性中选择 Windows of same processMessages to View : Select All

但是我们首先尝试通过打开 Processes View 查看此进程的所有消息Processes View Spy++ 和我们的应用程序未显示在此进程列表中。在另一台运行正常的PC上交叉检查,在Spy++的进程列表中也正常显示进程。

是否可以从进程未显示在 Spy++ 的进程 View 中这一事实推断出有关行为不当的应用程序的任何信息,但应用程序的主窗口显示在 Windows View 中。 为什么主窗口可见的进程不会显示在 Spy++ 的进程 View 中?

进程列在任务管理器和 Visual Studio 2005 的附加进程窗口中。所以这些工具显然使用与 Spy++ 不同的方法来列出进程......?

应用程序当前挂起的系统是Windows XP SP2系统,我们使用了Visual Studio 2005自带的Spy++ Utility。

该行为偶尔会再次出现,但只会在应用程序运行几天后出现!

最佳答案

运行 Vista 或更高版本?您的进程可能已提升,而 Spy++ 未提升​​。较新版本的 Spy++ 需要提升。因此,请尝试显式提升 Spy++,看看是否有帮助。

关于windows - Spy++ 如何构建它的进程列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8180527/

相关文章:

c++ - 可以从外部进程移动/调整窗口大小 [C++/Windows]

c - 如何在内核模式下使用 ZwQuerySystemInformation() 获取线程 ID?

C++/WinAPI - 从 DWORD 中删除标志(按位运算符?)

c++ - 将子窗口停靠到父窗口

c# - 从托管代码使用非托管代码

Windows服务器上的PHP7 UTF-8文件名,由ZipArchive引起的新现象

c++ - Boost:Bootstrap.bat 编译失败以构建 bjam

winapi - 以编程方式从 win32 转储文件中读取内存

c++ - 如何在派生 CComboBox 的类中捕获新项目选择

c++ - MFC 的 CTabCtrl::HitTest 函数为单击的任何选项卡返回 "1"