1

在window7 64bit 上使用键盘挂钩时出现问题。我做这些事情: 1. 创建一个 32 位 dll 2. 将其加载到应用程序并 setWindowHookEx

我已经成功连接到 32 位应用程序(Y!M、Skype...),但是当我连接到桌面或任何 64 位应用程序(记事本)时,该应用程序会冻结,直到我停止挂钩应用程序。我创建了 64 位 dll,在上面做同样的事情,并且在 32 位进程中遇到了同样的问题。

所以,我认为问题出在我的 32 位 dll 中,无法注入 64 位进程。但是我不知道当窗口关注它时如何注入 64bit dll 来处理。

我想知道有什么方法可以做到这一点,以及如何做到这一点。或者我可以只挂接32位进程而不挂接64位进程,你能告诉我怎么做吗?谢谢。

4

1 回答 1

2

问题是您不能将 32 位 DLL 加载到 64 位进程中,或者将 64 位 DLL 加载到 32 位进程中。来自64 位 Windows 编程指南

... 32 位进程无法加载 64 位 DLL 以执行,64 位进程无法加载 32 位 DLL 以执行。

您将需要有两个版本的 DLL:32 位和 64 位。但这只是部分解决方案。此外,您需要确定要将 DLL 加载到其中的进程的体系结构。WINAPI 函数GetBinaryType()可以确定这一点,但它需要您的代码必须获取的二进制文件的路径。

于 2012-07-12T08:33:11.280 回答