当我执行这个程序并按住鼠标左键时,它会让我进入while循环。现在这就是我想要的所有美好和花花公子,但是它似乎让我陷入了没有退出的while循环。
现在我在质疑为什么在放开LButton时,为什么我会陷入这个循环中。因为当我放开LButton时,语句不应该返回false?
if (GetAsyncKeyState(0x01)){
Sleep(250);
while (GetAsyncKeyState(0x01)){
/* code */
Sleep(100);
}
}
编辑:
好吧,所以下面是相同的陈述,但使用shift键而不是LButton。它执行得很好。然而,现在当我将它改为LButton时,它会陷入循环中。
if (GetAsyncKeyState(0x10)){
while (GetAsyncKeyState(0x10)){
left_click();
clicks++;
Sleep(delay);
}
display_values(delay, clicks);
}
我确实尝试了这个功能
bool IsLeftMouseButtonPressed() { return GetAsyncKeyState(VK_LBUTTON) & 0x8000; }
解决了陷入循环的问题,但是现在它只执行while循环内的命令一次。在用户放开LButton之前,我的目标是持续不断。
答案 0 :(得分:1)
从这个api的msdn:
如果函数成功,则返回值指定自上次调用GetAsyncKeyState以来是否按下了键,以及该键当前是向上还是向下。如果设置了最高有效位,则键为关闭,如果设置了最低有效位,则在上次调用GetAsyncKeyState后按下该键。
所以你所追求的是:
bool IsLeftMouseButtonPressed(){return GetAsyncKeyState(VK_LBUTTON)&为0x8000; }
如果当前鼠标左键按下
,此函数将返回true