我目前正在研究一种在计算机上记录用户操作的可靠方法。我创建了一个简单的应用程序,它可以在全局范围内挂钩WH_CBT
事件,现在它似乎工作正常。我读过应用程序有自己的WH_CBT
事件处理程序并且在处理它后不会调用CallNextHookEx()
函数的情况。我认为这种情况会阻止我使用系统范围的钩子自己处理该应用程序中的任何事件。
有没有其他(可能更好)的方法来劫持应用程序中的击键事件?也许与手动将 DLL 注入这样的进程有关:
- 挑选过程。
- 使用
CreateRemoteThreadEx()
. - DLL 挂钩(绕行)一些 winapi 函数并从它们收集有关击键或其他事件的信息。
在这种情况下,挂钩GetMessage()
或TranslateMessage()
功能就足够了吗?我是否正确,任何使用消息循环的进程都必须使用这些函数才能处理创建的窗口的事件?