如果标题不清楚,我很抱歉..但是我不知道怎么说得更短:c下面的(提取)代码应该是在按下/发送'U‘键的情况下快速按/发送键'A’的。但是如果我按“U”,它将首先发送“U”,然后紧接着发送几个“A”。我如何才能使密钥'U‘根本不被发送?我尝试了不同的方法,但我不能让它工作…我认为问题出在if条件中:/
INPUT ip; // Structure for creating keyboard-events
ip.type = INPUT_KEYBOARD; // Create a generic keyboard-event
ip.ki.wScan = 0; // Hardware-Scan-Code for the key
ip.ki.time = 0; //
ip.ki.dwExtraInfo = 0; //
for (;;) {
sleep_for(milliseconds(1)); // Sleep in each iteration so the CPU / RAM have a relaxed life
if (GetAsyncKeyState(0x55)) { // If key 'U' is pressed
ip.ki.wVk = 0x41; // Press key 'A'
ip.ki.dwFlags = 0; //
SendInput(1, &ip, sizeof(INPUT)); //
ip.ki.dwFlags = KEYEVENTF_KEYUP; // Release key that was pressed
SendInput(1, &ip, sizeof(INPUT)); //
}
}发布于 2020-06-29 09:31:36
您正在循环中调用GetAsyncKeyState()。如果检测按键是否被按下。在按键期间,它会多次调用函数。当你按一个键的时候,通常是5-25毫秒,所以GetASyncKeyState()会检测到多次按键。
GetASyncKeyState()返回一个短整型,如果设置了最低有效位,则在之前对GetASyncKeyState()的调用中已经检测到该键
要修复您的代码,只需使用按位运算符和
if (GetAsyncKeyState(0x55) &1)这在切换布尔值或功能时也很有用。
https://stackoverflow.com/questions/62501294
复制相似问题