Подтвердить что ты не робот

Отправка событий клавиатуры в другое приложение на С#, которое не обрабатывает события Windows

вот моя ситуация: мы пишем приложение, которое должно преобразовывать координаты Microsoft Kinect в события клавиатуры и мыши.

Когда нам нужно взять под контроль мышь, все работает так, как мы планировали в любом виде приложения. Проблема возникает, когда нам нужно отправлять события клавиатуры (например, клавиша или клавиша вверх) в приложения, которые не обрабатывают события Windows, например игры.

Мы пробовали класс SendKeys.net framework, и он работает только с приложениями Windows. Когда приложение представляет собой игру Half-Life или Doom, мы не можем получить тот же эффект. Итак, вот мой вопрос: как мы можем эффективно отправлять события клавиатуры в эти другие приложения?

4b9b3361

Ответ 1

Вам нужно смоделировать ввод, используя SendInput. SendMessage и SendKeys работают на уровне сообщений Windows, но приложения DirectX не запускают традиционный цикл сообщений.

Есть страница на PInvoke.NET, но я должен признаться, я не пытался ее использовать.


См. также этот поток на сайте GameDev.net, где кто-то работал с некоторыми из "прорезывающих" проблем, которые могут быть встречены конкретно взаимодействуя с приложением DirectInput.

Ответ 2

К сожалению, DirectX не имеет функции встроенного подключения; однако some (эта оболочка является .Net-обложкой над другой) библиотеки, которые могут это сделать. Вам также нужно будет изучить XInput, который обесценивает DirectInput.

Ответ 5

Это быстрое и простое решение, которое я использую. Хорошо работает.

InputSimulator