keybd_event ctrl+shift+down 组合键中,shift不生效
如歌 风语
0
信誉分
我使用keybd_event在excel上实现组合键ctrl+shift+down,代码如下
#include <windows.h>
#include <iostream>
#include <thread>
int main() {
std::this_thread::sleep_for(std::chrono::seconds(2)); // 等待 2 秒
// 模拟按下Ctrl键
keybd_event(VK_CONTROL, 0x1d, 0, 0);
// 模拟按下Shift键
keybd_event(VK_SHIFT, 0, 0, 0);
// 模拟按下Down箭头键
keybd_event(VK_DOWN, 0, 0, 0);
// 模拟释放Down箭头键
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
// 模拟释放Shift键
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
// 模拟释放Ctrl键
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
但它不生效,具体的说是其中的shift不生效,然后我使用unicode
#include <windows.h>
#include <iostream>
#include <thread>
int main() {
std::this_thread::sleep_for(std::chrono::seconds(2)); // 等待 2 秒
// 模拟按下Ctrl键
keybd_event(VK_CONTROL, 0x1d, 0 | KEYEVENTF_UNICODE, 0);
// 模拟按下Shift键
keybd_event(VK_SHIFT, 0x2a, 0 | KEYEVENTF_UNICODE, 0);
// 模拟按下Down箭头键
keybd_event(VK_DOWN, 0x50, 0 | KEYEVENTF_UNICODE, 0);
// 模拟释放Down箭头键
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP | KEYEVENTF_UNICODE, 0);
// 模拟释放Shift键
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP | KEYEVENTF_UNICODE, 0);
// 模拟释放Ctrl键
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP | KEYEVENTF_UNICODE, 0);
return 0;
}
没有问题。
这是为什么?而且在不使用unicode的前提下,shift不和方向键(up/down/right/left)组合,和其他按键的组合都是正常的。
谢谢您解答我的问题!
登录以回答