1

我有一个要注入 DX 游戏的 DLL。在 DLL 中,我禁用 XInput、原始输入以及 WndProc 的子类以过滤一堆输入消息,如 WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_INPUT 等。使用 XInputEnable(FALSE) 禁用 XInput 并使用 RIDEV_REMOVE 标志注册原始设备。

虽然它适用于某些游戏,但并不适用于所有游戏。某些游戏仍然有鼠标移动/悬停输入,当我移动时我可以看到某些 UI 的悬停状态。

我的问题是我错过了什么?游戏是否可以通过其他方式捕获输入?

谢谢你。

4

1 回答 1

1

我可以想到应用程序可能仍在接收鼠标输入的这些可能方式:

  • 它重新启用原始输入通知
  • 除了你的一个子类窗口之外的一个窗口正在接收消息
  • 正在投票GetCursorPos
  • 使用 Windows HID API 或其他用户模式接口访问鼠标设备
  • 使用挂钩鼠标事件或 Windows 消息SetWindowsHookEx

可能是其他人,但这些是我目前能想到的。

于 2014-11-19T20:21:38.853 回答