我有一个游戏正在运行,我试图在游戏中显示一个叠加层;用户可以输入他的详细信息。这里的问题是用户输入的击键可用于游戏源,我想限制击键仅覆盖。
我使用本机c ++ dll来显示使用CEF来呈现内容的叠加层
是否有任何方法可以安全地执行此操作,因此用户详细信息不会暴露给任何其他程序/进程。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以尝试使用SetWindowHookEx。这样,您可以挂钩发送到进程的所有键盘消息,并完全停止发送它们(并在您自己的应用程序中处理它们而不需要关注)。这是一种相当强大的方式,但一些复制保护可能不喜欢它。
正常的步骤是:
创建一个DLL(必须是因为你需要将它加载到另一个进程/地址空间),它挂钩了windows消息并进行了第一次过滤。通常你使用一些IPC机制来形成你自己的过程。如果您只挂钩鼠标消息,则可以使用Windows消息将信息发送到您自己的一条隐藏消息。如果您不希望邮件到达,您可以在那里停止链接。
当IPC呼叫到达您自己的窗口时;处理它就像你自己获得键盘消息一样。尽量小心焦点等。
您唯一不能以这种方式捕获的是您尝试更改的应用程序行为是否依赖于GetAsyncKeyState()。在这种情况下,你唯一的选择是使用注入你的DLL到其他地址空间并挂钩调用本身,但这是更高级别的黑客攻击。
一句忠告:开发windows挂钩软件时:经常保存,经常保存!如果你犯了一个错误,你可能会一次性崩溃一大堆应用程序......