我读了很多关于这个的文章,画面变得越来越模糊。我有一个32位的应用程序,它安装了一个KeyboardHook来等待一个全局热键并唤醒。在win7 x64版本上运行它,我注意到当按下热键时它会挂起Outlook x64版本。
所以我做了一些研究,看起来32位键盘挂钩甚至不应该在64位应用程序中工作。是时候进行更多测试了…
他们的热键在64位记事本,写字板和便利贴中工作良好。我验证了这些是64位应用程序,因为它们在任务管理器中旁边没有"*32"。不会挂起应用程序,它会做它应该做的。但是等待…32位的钩子DLL不能加载到64位的应用程序中,对吗?
看看进程资源管理器,钩子dll甚至没有加载到记事本进程中!(如果我从WOW64目录运行32位的notepad.exe,我可以看到dll加载到进程中,所以我知道我使用的工具是正确的)。
所以Outlook挂起问题可能是相关的,也可能不是,但是为什么钩子甚至在64位记事本上工作?
我有一个32位的应用程序,它安装了一个KeyboardHook来等待全局热键并唤醒。
如果这是您的最终目标,那么使用RegisterHotKey会更简单,对系统的影响也更小。