У меня стандартная клавиатура США, но я хотел бы имитировать нажатия клавиш на итальянском или китайском языке, используя 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 ) ) ;
Заметка :-
Без изменения настроек клавиатуры.
Когда используешь 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 ) ) ;
Других решений пока нет …