2

已经阅读了很多关于这个的内容,图片变得更加模糊。我有一个 32 位应用程序,它安装了一个 KeyboardHook 来等待全局热键并唤醒。在 Win 7 x64 版本上运行它我注意到按下热键时它会挂起 Outlook x64 版本。

所以我做了一些研究,看起来 32 位键盘钩子甚至不应该在 64 位应用程序中工作。是时候进行更多测试了...

它们的热键在 64 位记事本、写字板和便笺中运行良好。我验证了这些是 64 位应用程序,因为它们在任务管理器中旁边没有“*32”。不会挂起应用程序,它会做它应该做的事情。但是等等……一个 32 位的钩子 dll 不能被加载到一个 64 位的应用程序中,对吧?

查看 Process Explorer 显示挂钩 dll 甚至没有加载到记事本进程中!(如果我从 WOW64 目录运行 32 位 notepad.exe,我可以看到加载到进程中的 dll,所以我知道我使用的工具是正确的)。

因此,Outlook 挂起问题可能相关也可能不相关,但为什么该钩子甚至在 64 位记事本中都可以工作?

4

1 回答 1

0

我有一个 32 位应用程序,它安装了一个 KeyboardHook 来等待全局热键并唤醒。

如果这是您的最终目标,那么仅使用RegisterHotKey会更简单且对系统的影响更小。

于 2011-08-20T14:42:32.640 回答