3

我对在特定应用程序(如 Microsoft Word)的上下文中进行键盘监听感兴趣。谷歌搜索表明,解决这个问题的唯一方法是使用全局键盘挂钩。

全局键盘挂钩监听所有活动应用程序中的所有按键事件。例如,用户在 Microsoft Word 中输入文本(我需要捕捉这些事件),同时在 Facebook 上给他的朋友写一些消息。这意味着我的键盘监听器也处理 Facebook 消息,但这对我来说是多余的信息。

所以我的问题是,如何确定最后按下的键的主机应用程序?或者换句话说,我如何确定当前活动的应用程序以了解按下键的“上下文”?

4

1 回答 1

0

如果 GetForegroundWindow 的想法不适合你。由于您已经有一个使用 Word 加载的 COM 插件SetWindowsHookEx,因此最后一个参数允许您传入线程 ID。因此,在您的 COM 插件中,您可以为 Word 使用的每个线程添加一个挂钩,或者通过反复试验找出您需要挂钩的线程。 所有新线程都可以通知DllMain(或 DllEntryPoint),因此这可能是设置钩子并释放它们的好地方。

最终防病毒软件可能会开始警告这些类型的钩子,但到目前为止,我编写的使用它们的应用程序已安装在 100,000 台 PC 上,并且我们已经收到了这种性质的零支持电话。真是太神奇了。

于 2014-08-27T02:58:51.190 回答