我对特定应用程序(如Microsoft Word)的上下文中的键盘监听感兴趣。谷歌搜索表明,解决这个问题的唯一方法是使用全局键盘钩。
全局键盘挂钩侦听所有活动应用程序中的所有按键事件。例如,用户在Microsoft Word中键入文本(我需要捕获这些事件)并同时在Facebook上向他的朋友写一些消息。这意味着我的键盘监听器也处理Facebook消息,但这对我来说是多余的信息。
所以我的问题是,如何确定最后一个按键的主机应用程序?或者换句话说,如何确定当前活动的应用程序以理解按下键的位置的“上下文”?
答案 0 :(得分:0)
如果GetForegroundWindow的想法不适合你。由于您已经有一个使用Word SetWindowsHookEx加载的COM插件,因此最后一个参数允许您传入线程ID。因此,在你的COM插件中你可以为Word使用的每个线程添加一个钩子,或者从试验和错误中可能找出你需要挂钩的线程。 DllMain(或DllEntryPoint)可以通知所有新线程,因此这可能是设置挂钩的好地方,也可以释放它们。
最终反病毒软件可能会开始警告这些类型的钩子,但到目前为止,我编写的使用它们的应用程序已安装在100,000台PC上,我们已经有这种性质的ZERO支持调用。这很神奇。