我想将从 android 客户端收到的鼠标和键盘输入发送到在 Windows 上运行的游戏。SendInput
几乎适用于我迄今为止工作过的所有游戏。但是要使 SendInput
工作,游戏必须是一个前景窗口。
为了解决这个问题,我使用了 PostMessage(hwnd,...)
和 hwnd 来处理游戏窗口。但如果游戏使用 DirectInput,这将不起作用。这是通过 Hook GetDeviceState
解决的。现在我开始开发的另一个游戏是使用 WM_INPUT
或原始输入,我必须创建原始输入才能使其工作。
根据这个 MSDN Article
directInput 使用 WM_INPUT 工作。
所以 SendInput 也提供了抽象。
我想要的只是将输入独立发送到应用程序,即使它的窗口没有聚焦。这样我就可以一次将输入发送到多个游戏。有没有办法使用一个更高级别的 API 调用(如 SendInput)来实现这一点?这可以用 SendInput 来完成吗?是否有任何 C/C++ 库?
最佳答案
使用 RAWINPUTDEVICE
结构注册输入设备时,
设置 dwFlags = RIDEV_EXINPUTSINK
以在进程处于后台时接收输入。
例子:
RAWINPUTDEVICE rid;
rid.usUsagePage = 1;
rid.usUsage = 4; // Joystick
rid.dwFlags = RIDEV_EXINPUTSINK;
rid.hwndTarget = window;
if (!RegisterRawInputDevices(&rid, 1, sizeof(RAWINPUTDEVICE)))
return -1;
关于c++ - SendInput到后台窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35408495/