按下特定键时快速按此键.如何防止按下扳机键?(C++)
Quickly press this key when a specific key is pressed. How prevent the trigger key to be pressed? (c++)
如果标题不清楚,我很抱歉.. buuut 我不知道如何把事情缩短: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)); //
}
}
你在循环中调用 GetAsyncKeyState((。 如果检测到是否按下了该键。 在按下该键期间,它会多次调用该函数。 当您按下某个键时,它通常是 5-25 毫秒,因此 GetASyncKeyState(( 会多次检测按键。
GetASyncKeyState((返回一个短整数,如果设置了最低有效位,则在之前对 GetASyncKeyState(( 的调用中已经检测到该键
要修复您的代码,只需使用按位运算符 AND 检查此位
if (GetAsyncKeyState(0x55) &1)
这在切换布尔值或特征时也很有用。