Jas*_*n A 4 c# sendkeys minecraft
我正在尝试将键盘输入发送到 Minecraft 以移动播放器,但是当我尝试使用时SendKeys.SendWait("W");什么也没有发生。如果我在 Minecraft 中打开聊天,它会在聊天中输入“W”,但是在聊天之外我的输入似乎被忽略了。谢谢。
编辑:我试过使用SendInput以及InputSimulator两者都具有相同的效果。
基本上Windows有三个保护环。通过这样做,SendKeys您正在向应用程序发送 ring 3 命令。然而,DirectX 只侦听 ring 0 和 ring 1(可能是 ring 2)命令以减少由命令通过驱动程序传递到应用程序引起的部分延迟。
因此,为了使 DirectX 游戏对您发送的事件做出反应,您必须在驱动程序级别发送它。您可以通过使用扫描代码(不要使用虚拟代码)pinvoke WINDOWS api SendInput来模拟 ring 2 驱动程序输入。
如果扫描代码不起作用,则游戏可能会出于反黑客目的阻止 ring 2 命令。在这种情况下,您需要编写一个驱动程序 + 一个虚拟硬件来直接发送 ring 1 命令。(如果您没有经验,请不要尝试。如果出错,可能会导致蓝屏死机甚至系统损坏)
我通过使用 InputSimulatorPlus 解决了它
https://github.com/TCatzigiannakis/InputSimulatorPlus
InputSimulator s = new InputSimulator();
s.Keyboard.KeyDown(VirtualKeyCode.VK_W);
这只是向前运行,要停止使用,s.Keyboard.KeyUp(VirtualKeyCode.VK_W);
您也可以使用s.Keyboard.KeyPress(VirtualKeyCode.VK_W);,只需单击“W”键即可。