我需要将一个 dll 注入一个或多个外部进程,我还想从中拦截键盘事件。这就是为什么使用带有 WH_KEYBOARD 的 SetWindowsHookEx 看起来是一个简单的方法来一步实现这两个目标。
现在,当我只对几个选定的进程感兴趣时,我真的不想安装全局挂钩,但 Windows 挂钩似乎是全局的或仅限线程的。
我现在的问题是如何正确设置流程范围的挂钩。
我想一种方法是在我的应用程序的目标进程的主线程上设置钩子,然后在我的 dll 中对所有其他正在运行的线程执行相同的操作(加上 DLL_THREAD_ATTACH 用于稍后启动的线程)。但这真的是一个好方法吗?更重要的是,没有更简单的方法来设置进程范围的钩子吗?我的想法看起来既麻烦又丑陋,但是我无法在任何地方找到有关执行此操作的任何信息。