C # Отправить ключевые входы в Minecraft, чтобы переместить игрока - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь отправить клавиатурные вводы в Minecraft для перемещения игрока, однако, когда я пытаюсь использовать SendKeys.SendWait("W");, ничего не происходит.Если я открываю чат в Minecraft, он набирает «W» в чате, однако вне чата мои входные данные, похоже, игнорируются.Спасибо.

Редактировать: я пытался использовать SendInput, а также InputSimulator оба с одинаковым эффектом.

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

В основном Windows имеет три защитных кольца .Делая SendKeys, вы отправляете команду ring 3 приложению.Однако DirectX слушает только команды «0» и «1» (возможно, «2»), чтобы уменьшить задержку дроби, вызванную передачей команды через драйвер приложению.

Таким образом, чтобы игры DirectX реагировали на событие, которое вы отправили, вы должны отправить его на уровне драйвера.Вы можете смоделировать ввод драйвера ring 2 с помощью pinvoke WINDOWS api SendInput с кодом сканирования (не используйте виртуальный код).

Если код сканирования не работает, возможно, игра блокирует команды ring 2 для защиты от взлома.В этом случае вам нужно написать драйвер + виртуальное оборудование для прямой отправки команд кольца 1.(не пытайтесь сделать это, если у вас нет опыта. Синий экран смерти или даже поврежденная система может привести к ошибке)

1 голос
/ 20 марта 2019

Я решил это с помощью 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".

...