С#: отправить ввод из неактивного окна

Я пытаюсь отправить ввод из WPF Window, у которого нет фокуса. Идея состоит в том, чтобы создать виртуальную цифровую клавиатуру, в которой нажатие Alt+M, например, отправляет Alt+Numpad0. У меня есть глобальные хуки Майкла Кеннеди. работает, но я не могу найти способ:

1) Отправить ключи из неактивного окна

2) Проглотите эти ключи, чтобы они не обрабатывались приложением, которое имеет фокус.

Второй может стать проблемой, как только я исправлю первый.

System.Windows.Forms.SendKeys не сработало для этого, потому что мне нужно смоделировать комбинации Alt+xxx для создания правильных символов. Я также попробовал System.Windows.Input.InputManager.Process() из сообщение MSDN, но если окно, отправляющее входные данные, не имеет фокуса, то InputSource, который я использовал (второй параметр — Keyboard.PrimaryDevice.ActiveSource), имеет значение null.

Любые идеи?

Почему виртуальная цифровая клавиатура? Без цифровой клавиатуры на моем ноутбуке (Studio 1555) я не могу вводить символы, не открывая чармап - спасибо, Делл!


person Echilon    schedule 16.08.2009    source источник


Ответы (1)


Ознакомьтесь с симулятором ввода Windows для имитации нажатий клавиш. Или используйте AutoHotkey, чтобы перехватывать любое нажатие клавиши и повторно отправлять его как другое нажатие клавиши.

person Andreas Zita    schedule 16.05.2011