C#向Minecraft发送键输入以移动播放器

问题描述 投票:0回答:2

我正在尝试向Minecraft发送键盘输入以移动播放器,但是当我尝试使用SendKeys.SendWait("W");时没有任何反应。如果我在Minecraft中打开聊天,它会在聊天中键入“W”,但是在聊天之外我的输入似乎被忽略了。谢谢。

编辑:我尝试使用SendInput以及InputSimulator都具有相同的效果。

c# minecraft sendkeys
2个回答
2
投票

Windows基本上有三个protection ring。通过执行SendKeys,您将向应用程序发送ring 3命令。但是,DirectX仅侦听ring 0和ring 1(可能是ring 2)命令,以减少命令通过驱动程序到应用程序所导致的分数延迟。

因此,为了让DirectX游戏对您发送的事件作出反应,您必须在驱动程序级别发送它。您可以通过带有扫描码的pinvoke WINDOWS api SendInput模拟环2驱动程序输入(不要使用虚拟代码)。

如果扫描代码不起作用,则游戏可能会阻止响铃2命令以防止黑客攻击。在这种情况下,您需要编写驱动程序+虚拟硬件来直接发送ring 1命令。 (如果您没有经验,请不要尝试此操作。如果出现错误,可能会导致蓝屏死机甚至系统损坏)


1
投票

我通过使用InputSimulatorPlus解决了它

https://github.com/TChatzigiannakis/InputSimulatorPlus

InputSimulator s = new InputSimulator(); s.Keyboard.KeyDown(VirtualKeyCode.VK_W);

这只是向前跑,停止使用s.Keyboard.KeyUp(VirtualKeyCode.VK_W);你也可以使用s.Keyboard.KeyPress(VirtualKeyCode.VK_W);,这只需点击“W”键。

© www.soinside.com 2019 - 2024. All rights reserved.