альтернатива VB.NET SendKeys

Я использую следующий код для отправки ключей в определенное приложение, но на некоторых ПК он не работает. Сам код должен быть в порядке, так как на большинстве компьютеров он работает нормально. Просто на некоторых компьютерах это не работает. Он отправляет ключи слишком много раз или не отправляет их вообще. После поиска в Google я обнаружил, что это общая проблема с некоторыми материнскими платами, поэтому я хотел бы реализовать более надежный код, который делает то же самое.

ОБНОВЛЕНИЕ: INPUTSIMULATOR не подходит, потому что он не работает с моим кодом, так как мне нужно активировать другое окно. (только что проверил)

Как можно было бы получить следующий код более надежным способом?

    ....
    Key = Sender.Tag
    If Key = "{SPACE}" Then Key = " "

    SetActiveWindow(Form1.activewin)

    If IsNumeric(Key) Then
        SendKeys.Send(Key)
    Else
        SendKeys.Send(Special & IIf(CapsLock.Checked, UCase(Key), Key))
    End If

    Application.DoEvents()

    ....

Благодарность


person sharkyenergy    schedule 23.05.2013    source источник
comment
Возможно, это поможет: stackoverflow. ком/вопросы/5028872/   -  person Micha    schedule 23.05.2013
comment
спасибо, но симулятор ввода не работает в моем случае, потому что я должен писать текст в другое окно. только что обновил основной пост. Благодарность!   -  person sharkyenergy    schedule 23.05.2013
comment
Является ли окно частью вашего проекта или из другого процесса?   -  person tinstaafl    schedule 23.05.2013
comment
Если это другой процесс, Класс процесса, позволит вам переопределить стандартный ввод.   -  person tinstaafl    schedule 23.05.2013
comment
иной процесс. извините, я новичок, не могли бы вы немного объяснить, что такое класс процесса?   -  person sharkyenergy    schedule 23.05.2013
comment
form1.activewin - это переменная, содержащая дескриптор окна, в которое я хочу писать. приведенный выше код работает нормально, но если я заменю sendkeys на inputsimulator, он больше не будет работать. целевое окно не становится активным..   -  person sharkyenergy    schedule 23.05.2013


Ответы (1)


решено с помощью inputsimulator и добавления SetForegroundWindow(Form1.activewin) перед SetActiveWindow(Form1.activewin)

person sharkyenergy    schedule 23.05.2013