Как смоделировать ввод с клавиатуры во ВСЕХ приложениях? - PullRequest
9 голосов
/ 06 января 2012

Я пишу приложение (на C #), которое как его часть должно имитировать и посылать некоторые нажатия клавиш в другое приложение. Я использую http://inputsimulator.codeplex.com/ проект для симуляции ключей, и он работает во многих приложениях, но в некоторых нет - например, Mortal Combat 4.

Я гуглил об этом и нашел много ответов, варьирующихся от «невозможно» до «вы должны использовать библиотеку XXX» и т. Д. Эти ответы очень напугали меня, и даже почти убедили, что я не смогу сделать это в тогда, НО ...

Виртуальная клавиатура M $ работает. Работает во ВСЕХ приложениях. Так что это возможно ... Кто-нибудь из вас, умные ребята, знает, как мне этого добиться?

Ответы [ 3 ]

6 голосов
/ 07 января 2012

Хорошо, я думаю, что наконец-то начал работать.Я использовал API Monitor, рекомендованный Neal P , и он показал только минимальные различия между вызовами OSK и моими.Чуть позже я попытался заставить мой вызывающий поток спать некоторое время между отправкой сообщений с помощью нажатия и отпускания клавиши, и все.

1 голос
/ 09 января 2012

Хотя вы смогли достичь своей цели, способ, которым вы ее достигли, не дает принципиального ответа на ваш вопрос: как имитировать ввод с клавиатуры во ВСЕХ приложениях?

Существует множество ситуаций, когда в обычном пользовательском режиме MicrosoftУже упоминавшийся API не работает, как игровые приложения, использующие DirectInput API или защищенные игры.

Я создал библиотеку , которая может помочь в таких ситуациях, он предоставляет простой C API, которыйвнутренне связывается с драйверами фильтров устройств.Он может отправлять входные данные для игр на основе DirectInput, а также может обойти некоторые защитные функции игры.Я проверил, и он все еще в состоянии обойти некоторые известные защиты игры, используя версию библиотеки x64.Защитные игры обычно подключают только API системы x86.Ну, наконец-то, 18 февраля 2012 года, это то, что я наблюдаю.

0 голосов
/ 06 января 2012

Взгляните на SendKeys на MSDN

...