Конвертировать KeyEventArgs в структуру KEYDBINPUT

Я работаю в сетевой системе (в C#), где на одном компьютере я получаю ввод с клавиатуры через ловушку низкого уровня, а затем передаю ввод на другой компьютер, где он должен быть введен.

Хук доставляет ввод с клавиатуры в классе KeyEventArgs. Чтобы внедрить его в целевой компьютер, мне нужно использовать структуру KEYBDINPUT с SendInput.

Похоже, не существует простого совпадения между KeyEventArgs.KeyCode или KeyValue и KEYBDINPUT.wVk и wScan. Я также пробовал MapVirtualKey в некоторых комбинациях.

В качестве альтернативы, я мог бы преобразовать KeyEventArgs в сообщения ключа Windows (WM_KEYUP/DOWN с wParam и lParam) на исходном компьютере, но я сталкиваюсь с подобными трудностями.

Кто-нибудь здесь может помочь с любым сценарием?

1 ответ

You may want to look at the recent answer here where I suggest the use of InputSimulator as an alternative to other low level work. Это использует Win32 SendInput API напрямую.

Это использует VirtualKeyCode, so since you have KeyEventArgs Вы можете просто использовать KeyValue имущество:

InputSimulator.SimulateKeyPress(keyEventArgs.KeyValue);

Если у вас есть только System.Key you can convert to a VirtualKey

http://msdn.microsoft.com/en-us/library/system.windows.input.keyinterop.virtualkeyfromkey.aspx

How can I convert 'System.Windows.Input.Key' to 'System.Windows.Forms.Keys'?

Другие вопросы по тегам