C++ SendInput,为什么';t模拟向上箭头键?

C++ SendInput,为什么';t模拟向上箭头键?,c++,winapi,C++,Winapi,我需要模拟向上箭头键,所以我使用sendinput,我看到向上箭头键是0x26,但问题是程序模拟按下“L”键而没有向上箭头键,为什么? 代码如下: INPUT ip; ip.type = INPUT_KEYBOARD; ip.ki.time = 0; ip.ki.wVk = 0; ip.ki.dwExtraInfo = 0; ip.ki.dwFlags = KEYEVENTF_SCANCODE; ip.ki.wScan =0x26; //UP ARROW key SendInput(1, &am

我需要模拟向上箭头键,所以我使用sendinput,我看到向上箭头键是0x26,但问题是程序模拟按下“L”键而没有向上箭头键,为什么? 代码如下:

INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.time = 0;
ip.ki.wVk = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
ip.ki.wScan =0x26; //UP ARROW key
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
您使用的是虚拟密钥代码作为扫描代码,而不是实际的扫描代码


根据正确的值是
0x48

SendInput()
返回什么?他说什么?一个接一个地发送事件总是错误的。创建一个数组并将它们注入到一个调用
SendInput
中。文档中对此进行了解释。我相信你读得不够仔细。不管它值多少钱,在这里用扫描码挖东西是没有意义的。删除
KEYEVENTF\u SCANCODE
并在这种情况下使用虚拟密钥代码
VK\u UP
。它不起作用是的。您做错了。ip.ki.wScan=0X48此模拟8扫描代码取决于硬件。为虚拟密钥获取扫描码的正确方法是使用/将
uMapType
参数设置为
MAPVK_VK_to_VSC
MAPVK_VK_to_VSC_EX
。问题是我想在游戏中模拟按键,所以我必须使用ip.ki.wScantmove@secon25你有没有注意到雷米在评论中发布的链接,并阅读了有关他的文章那些功能?