为什么有些 windows 收不到 Windows 消息

Why do some windows not receive Windows messages

在 Visual Studio 上使用 Spy++ 工具我可以看到 windows 像桌面或资源管理器(文件资源管理器的东西)收到 WM_ 消息,但 windows 像 Firefox 或 Visual Studio 不接收消息。

为什么有些人能收到消息而有些人没有。

(WM_ 消息,我指的是 WM_MOUSELEAVEWM_SETCURSOR

Spy++ 需要注入一个钩子来监视 window 消息。为此,钩子函数的位数需要与拥有 window 的进程的位数相匹配,因此您应该使用 32 位版本的 Spy++ 来监视 32 位的 windows应用程序,以及用于监控 64 位应用程序的 64 位版本。

(毕竟,为什么要安装两个版本的 Spy++)

我运行在 64 位 windows 上使用 VS 2017。我使用 IDE 工具菜单中的 spy++,但它不记录消息。 然后我看到了 Ben Voigt 的回答并检查了版本,它是 x86 版本。 vs 2017 ide 在程序文件(x86)目录中。 所以我环顾四周尝试下载 x64 版本的 spy++ 但失败了。而且我尝试安装vs2019时无法选择x86或x64。 最后发现在spy++ x86版本的同一目录下有一个spy++ x64版本spyxx_xxx64.exe。工具菜单不知何故选错了。 所以如果你 运行 遇到和我一样的问题,只需找到并固定 spy++ 的 x64 版本。