到目前为止,我已经能够使用SendInput()函数来模拟鼠标和键盘虚拟键以及使用MOUSEINPUT和扫描键KEYBDINPUT.
我读(在SO上)INPUT_HARDWARE 是用于其他设备而不是鼠标或键盘.我正在尝试使用SendInput() 和HARDWAREINPUT结构模拟Xbox控制器(或任何可能有帮助的控制器)输入.有可能这样做吗?怎么做得好?
根据泄露的WinXP源代码,Win98之后的系统级别上SendInputINPUT_HARDWARE根本不支持事件类型:
case INPUT_HARDWARE:
if (fCanDiscontinue) {
/*
* Not supported on NT.
*/
RIPERR0(ERROR_CALL_NOT_IMPLEMENTED, RIP_WARNING, "xxxSendInput: INPUT_HARDWARE is for 9x only.");
goto discontinue;
}
break;
Run Code Online (Sandbox Code Playgroud)
根据 Wine 源代码,它似乎在一些旧代码中用于 HID 设备支持。
我尝试使用 SendInput() 和 HARDWAREINPUT 结构模拟 Xbox 控制器(或任何控制器,如果这可能有帮助)输入。
最好尝试使用虚拟游戏手柄仿真框架(ViGEmBus) 来实现此目的。它可以模拟 XInput 控制器并经过实战测试。