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

How to simulate specified keyboard keystroke in c++?

本文关键字:键盘 模拟 c++      更新时间:2023-10-16

我有美国标准键盘,但我想使用 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 必须是 unicode 字符wchar_t。不要使用MapVirtualKey .

另外,不要忘记在按下键之后发送"向上键"过渡。

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