2013-05-12 2 views
5

Я пытаюсь контролировать игры и бесплатно отслеживать с помощью внешнего устройства IMU здесь, моделируя входы клавиатуры, такие как стрелки влево и вправо.Имитировать ввод клавиатуры на системном уровне в C++

Я успешно выполнил вызов функции SendInput() в C++ для имитации нажатия левой и правой стрелки. Тем не менее, он фактически не работает в игровом приложении (даже для небольшой флеш-игры.)

Я искал в MSDN и обнаружил, что SendInput() работает только в приложениях с одинаковым уровнем целостности. Итак, есть ли способ выполнить эту симуляцию ввода с клавиатуры на системном уровне, чтобы решить эту проблему целостности?

Благодаря ~

+0

Это всегда сработало для меня, но вам может понадобиться драйвер клавиатуры или что-то в этом роде. – chris

+0

Не могли бы вы сказать, для какого приложения вы используете SendInput()? – Tianyu

+0

Если я правильно понимаю, у вас есть два приложения: 1, которые получают данные отслеживания IMU и пересылают его как события клавиатуры, и 1, который получает ввод на клавиатуре и переводит его как команды в флеш-игре. Вы пытались вручную отправлять события клавиатуры, WM_KEYDOWN, WM_KEYUP с помощью функции SendMessage. –

ответ

1

Не является прямым ответом на ваш вопрос, но альтернативное предложение.

Saitek (производитель большого ассортимента игровых устройств) всегда использует виртуальные драйверы клавиатуры/мыши для выполнения той же задачи. Я предлагаю вам сделать то же самое. ИЛИ вы можете сделать ваше устройство совместимым с HID на аппаратном уровне, чтобы он мог эмулировать клавиатуру/мышь/джойстик без каких-либо драйверов.

+0

Я думаю, что вы правы в разработке совместимого с HID устройства на аппаратном уровне. Также доступен виртуальный драйвер. благодаря – Tianyu