2

我目前正在研究一种在计算机上记录用户操作的可靠方法。我创建了一个简单的应用程序,它可以在全局范围内挂钩WH_CBT事件,现在它似乎工作正常。我读过应用程序有自己的WH_CBT事件处理程序并且在处理它后不会调用CallNextHookEx()函数的情况。我认为这种情况会阻止我使用系统范围的钩子自己处理该应用程序中的任何事件。

有没有其他(可能更好)的方法来劫持应用程序中的击键事件?也许与手动将 DLL 注入这样的进程有关:

  1. 挑选过程。
  2. 使用CreateRemoteThreadEx().
  3. DLL 挂钩(绕行)一些 winapi 函数并从它们收集有关击键或其他事件的信息。

在这种情况下,挂钩GetMessage()TranslateMessage()功能就足够了吗?我是否正确,任何使用消息循环的进程都必须使用这些函数才能处理创建的窗口的事件?

4

1 回答 1

1

使用低级键盘挂钩WH_KEYBOARD_LL将是最好的(因为它会捕获所有内容),但存在其他更具体的解决方案,例如对您定位的任何应用程序的父级窗口进行子类化以捕获与键相关的窗口消息,这避免了进行任何代码篡改或系统范围的过滤。

回到更全局的范围,您也可以使用或基于钩子来执行此操作WH_KEYBOARD,这可以在全局或线程级别完成。这完全取决于您要捕获的内容和数量。WH_CALLWNDPROCWH_GETMESSAGE

于 2012-02-13T13:42:50.807 回答