Конвертировать 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'?