【发布时间】:2014-01-23 00:37:58
【问题描述】:
我想安装一个钩子(在 Windows 上使用 WinAPI 和 C++)来获取发送到特定进程/线程的 WindowProc 的键输入事件(我的程序通过进程 ID 知道)。据我了解,我必须将钩子程序放入 DLL 中。到目前为止,对我来说一切都很好。但是钩子程序需要使用来自安装钩子的程序的数据。现在我不知道如何从 DLL 中的钩子程序访问这些数据。
我的第一个想法是在 DLL 本身内部维护一个数据结构,并通过调用放置在 DLL 中的另一个函数从外部对其进行更新。但我不确定,究竟该怎么做(例如:我假设这个数据结构必须是共享数据,以便所有调用都相同,无论来自哪个进程/线程,但我不确定它)。
我查看了一些关于如何实现挂钩的示例,但这些示例从未使用来自安装挂钩的原始程序(或任何其他“用户代码”)的数据。
如果有人可以向我解释这一点,甚至简要介绍如何解决上述问题(以及我的方法是否正确),我将不胜感激。
非常感谢!
【问题讨论】:
-
仔细看看 WH_KEYBOARD_LL 钩子,它不需要 DLL。
-
谢谢!这对我来说看起来不错。我要试试这个。