如何在c ++中模拟指定的键盘击键?

时间:2013-12-19 05:11:13

标签: c++ winapi keyboard sendinput

我有美国标准键盘,但我想使用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 ) ) ;

注意: -       不改变键盘设置。

1 个答案:

答案 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 ) ) ;