为什么某些窗口不接收windows消息

为什么某些窗口不接收windows消息,windows,messages,windows-messages,Windows,Messages,Windows Messages,使用Visual Studio上的Spy++工具,我可以看到桌面或资源管理器(文件资源管理器)之类的窗口接收WM_uu消息,但Firefox或Visual Studio之类的窗口不接收消息 为什么有些人收到信息,而有些人不收到 (所谓WM_u消息,我指的是类似于,WM_umouseleave或WM_usetcursor)Spy++需要插入一个钩子来监视窗口消息。为此,钩子函数的位需要与拥有窗口的进程的位匹配,因此您应该使用32位版本的Spy++来监视32位应用程序的窗口,使用64位版本来监视64

使用Visual Studio上的Spy++工具,我可以看到桌面或资源管理器(文件资源管理器)之类的窗口接收WM_uu消息,但Firefox或Visual Studio之类的窗口不接收消息

为什么有些人收到信息,而有些人不收到


(所谓WM_u消息,我指的是类似于,
WM_umouseleave
WM_usetcursor

Spy++需要插入一个钩子来监视窗口消息。为此,钩子函数的位需要与拥有窗口的进程的位匹配,因此您应该使用32位版本的Spy++来监视32位应用程序的窗口,使用64位版本来监视64位应用程序


(这就是为什么要安装两个版本的Spy++的原因)

我在64位windows上运行VS 2017。我使用IDE工具菜单中的spy++,但它不记录消息。 然后我看到Ben Voigt的答案,检查版本,它是x86版本。vs 2017 ide位于program files(x86)目录中。 所以我四处看看,试图下载一个x64版本的spy++但失败了。当我尝试安装vs2019时,我不能选择x86或x64。 最后,我发现在spy++x86版本的同一目录中有一个spy++x64版本spyxx_xxx64.exe。工具菜单不知怎么选错了。
因此,如果您遇到与我相同的问题,请在某处找到并锁定x64版本的spy++。

什么版本的Windows?你在运行Spy++吗?UIPI可能会阻止Spy++监视某些窗口。我正在windows 64位上使用Spy++(64)。我猜有些窗口只是不接收WM_uuu消息,所有窗口都会接收这些消息。因为你没有看到他们并不意味着他们不存在;这仅仅意味着你没有看到他们。在Windows操作系统上创建的每个窗口都会接收
WM
消息;它们是整个Windows用户界面API的基础。您的“猜测”不正确。@Ben:Windows如桌面或资源管理器(文件资源管理器)…Firefox或Visual Studio-其中哪一部分不是Windows UI的“桌面”部分?Microsoft的编程如此草率,以至于如果比特数不匹配,他们就不会显示错误消息,这真是太遗憾了!“要捕获此窗口的消息,您需要64位版本的Spy++”。