winapi — Как смоделировать указанное нажатие клавиши клавиатуры в C ++?

У меня стандартная клавиатура США, но я хотел бы имитировать нажатия клавиш на итальянском или китайском языке, используя SendInput метод.

Я использую метод SendInput, как это,

KEYBDINPUT  kb = { 0 } ;

ZeroMemory ( & kb , sizeof ( KEYBDINPUT ) ) ;
ZeroMemory ( & kInput , sizeof ( INPUT ) ) ;

kb.wVk = 0 ;
kb.dwFlags  =  KEYEVENTF_UNICODE ;
kb.wScan  = vk ; //vk is result of MapVirtualKey key API
kInput.type = INPUT_KEYBOARD ;
kInput.ki = kb ;

UINT res = SendInput ( 1 , & kInput , sizeof ( INPUT ) ) ;

Заметка :-
Без изменения настроек клавиатуры.

3

Решение

Когда используешь KEYEVENTF_UNICODE, kb.wScan просто должен быть wchar_t символ Юникод.
Не использовать MapVirtualKey,

Кроме того, не забудьте отправить переход «Key Up» сразу после нажатия «Key Down».

UINT res = SendInput ( 1 , & kInput , sizeof ( INPUT ) ) ;
kb.dwFlags |= KEYEVENTF_KEYUP;
res = SendInput ( 1 , & kInput , sizeof ( INPUT ) ) ;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]