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