Отправить ключ в активное окно

Привет. Я не знаю, возможно ли это, но стоит попробовать. Скажем, есть сторонняя гоночная игра, в которой не используется мышь. Есть ли способ создать приложение Windows Form, которое прослушивает щелчки мыши и передает соответствующий ключ в игру/активное окно (например, щелчок левой кнопкой мыши будет отправлять клавишу «Стрелка вверх» для ускорения, щелчок правой кнопкой мыши будет замедляться, отправляя клавишу «стрелка вниз»). Я просмотрел метод SendKeys, но он не работает, когда игра становится активным окном. Любые идеи? Спасибо


person XSL    schedule 01.11.2010    source источник


Ответы (2)


если игра использует DirectInput для чтения ключей, то SendKeys не будут работать, так как DI работает на уровне драйвера, а SendKeys/SendInput работает на уровне API, который может быть слишком «высоким» для игры. вы можете подключиться к DirectInput и отправлять ему команды, но его не будет однострочным, и если вы новичок в DirectX, вам это не понравится.

person jasper    schedule 01.11.2010
comment
Я не против перейти на низкий уровень через взаимодействие. Однако есть ли другой способ более низкого уровня, чем DirectInput? есть ли в Windows собственная команда, к которой можно получить доступ для отправки? - person XSL; 02.11.2010
comment
DirectX будет более низкого уровня, чем Interop. насколько я знаю, это самый простой «простой» способ получить доступ к оборудованию, чему-либо еще, и вы находитесь в стране драйверов устройств. если я ошибаюсь, я уверен, что кто-то другой даст ответ достаточно быстро. игра может не использовать DirectX, но почти все они используют. вы также можете изучить SendMessage WM_CHAR, который будет легче протестировать, чем любое решение DX - person jasper; 02.11.2010

Я не знаю, будет ли это работать, и если это возможно, но интуитивно я бы проверил, есть ли какая-то библиотека AutoIt для C #.

Насколько я знаю, у AutoIt нет проблем с отправкой событий нажатия клавиш в игры. В Интернете существует несколько способов интеграции AutoIt в C#, но пока я еще не пробовал ни один из них.

Тем не менее вы можете попробовать http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx

person Qiong Wu    schedule 02.11.2010