【发布时间】:2014-01-07 13:28:38
【问题描述】:
我有美国标准键盘,但我想使用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 ) ) ;
注意:- 无需更改键盘设置。
【问题讨论】:
-
我认为您在寻找错误的地方 - 原始键盘输入不是完成大部分语言特定内容的地方。也许您需要考虑模拟 IME 和/或一些辅助功能 API。
-
我是中国人,应该说中文键盘布局和en-us是一样的。中文字形的输入是使用输入法进行的。
-
@jiandingzhe 能否详细解释一下,如何使用SendInput法输入汉字?
-
@user2778665 我对 Windows API 知之甚少,我不知道 SendInput 是否可以处理超过 8 位的字符。如果没有,你需要一个“输入法”,它是一个程序,它会截取你的击键,以特定的方式解析它们(最常见的是,作为声音标点符号),在一个窗口中列出几个候选字符,然后你选择想要的字符.
标签: c++ winapi keyboard sendinput