Winapi – 扩展键盘扫描码
发布时间:2020-12-16 07:16:16 所属栏目:百科 来源:网络整理
导读:如果我想使用扩展扫描代码(如0xE0 0x1D(右CTRL))来模拟按键,我将如何在C中模拟这样的按键?我尝试使用两个INPUT结构调用SendInput,但只有左按CTRL键被“按下”.在具有“twin”(Shift和Alt)的其他键的情况下也会发生同样的事情. 其次,如何为“扩展”键引起键
如果我想使用扩展扫描代码(如0xE0 0x1D(右CTRL))来模拟按键,我将如何在C中模拟这样的按键?我尝试使用两个INPUT结构调用SendInput,但只有左按CTRL键被“按下”.在具有“twin”(Shift和Alt)的其他键的情况下也会发生同样的事情.
其次,如何为“扩展”键引起键盘事件? 解决方法KEYBDINPUT 结构有一个KEYEVENTF_EXTENDEDKEY标志来处理0xE0字节:
尝试这样的事情: INPUT inputs[2]; ZeroMemory(inputs,sizeof(inputs)); inputs[0].type = INPUT_KEYBOARD; inputs[0].ki.wScan = 0x1D; inputs[0].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_EXTENDEDKEY; CopyMemory(&inputs[1],&inputs[0],sizeof(INPUT)); inputs[1].ki.dwFlags |= KEYEVENTF_KEYUP; SendInput(2,inputs,sizeof(INPUT)); 但是,我建议使用虚拟密钥而不是扫描代码: INPUT inputs[2]; ZeroMemory(inputs,sizeof(inputs)); inputs[0].type = INPUT_KEYBOARD; inputs[0].ki.wVk = VK_CONTROL; inputs[0].ki.dwFlags = KEYEVENTF_EXTENDEDKEY; CopyMemory(&inputs[1],如果您绝对需要扫描代码,至少要查看 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容