我有美国标准键盘,但我想使用SendInput方法模拟意大利语或中文类型的击键。
我像这样使用SendInput metode,
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 ) ) ;
注意: - 不改变键盘设置。
答案 0 :(得分:2)
使用KEYEVENTF_UNICODE
时,kb.wScan必须是wchar_t
unicode字符。
请勿使用MapVirtualKey
。
此外,请不要忘记在按键关闭后发送“按键向上”转换。
UINT res = SendInput ( 1 , & kInput , sizeof ( INPUT ) ) ;
kb.dwFlags |= KEYEVENTF_KEYUP;
res = SendInput ( 1 , & kInput , sizeof ( INPUT ) ) ;