Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;我怎样才能停下来;睡眠();功能与关键?_C++_Winapi_Sleep_Ctime - Fatal编程技术网

C++ C++;我怎样才能停下来;睡眠();功能与关键?

C++ C++;我怎样才能停下来;睡眠();功能与关键?,c++,winapi,sleep,ctime,C++,Winapi,Sleep,Ctime,我正在使用ctime库,有一个无限循环。它使用“Sleep(100)”(但它会随机休眠约100ms)并暂停,但我无法确定如何停止Sleep()函数或从键盘获取输入,以便它知道下次“autoclicker==0”时,我的代码如下: bool autoclicker = 0; while(1) { if(GetKeyState(VK_F7) < 0) { if(autoclicker == 0){ autoclicker = 1;

我正在使用ctime库,有一个无限循环。它使用“Sleep(100)”(但它会随机休眠约100ms)并暂停,但我无法确定如何停止Sleep()函数或从键盘获取输入,以便它知道下次“autoclicker==0”时,我的代码如下:

bool autoclicker = 0;
while(1)
{
    if(GetKeyState(VK_F7) < 0)
    {
        if(autoclicker == 0){
            autoclicker = 1;
        }
        else{
            autoclicker = 0;
        }
    }

    if(autoclicker) // THIS IS WHERE I NEED TO BE ABLE TO DETECT IF 'F7' WAS PRESSED SO I CAN CHANGE 'autoclicker' TO 0
    {
        SendInput(3, Inputs, sizeof(INPUT));
        srand (time(NULL));
        Temp = rand()%77+60;
        Sleep(Temp); //SLEEPS FOR A RANDOM AMOUNT OF TIME (~100 MILLISECONDS)
    }
}
bool autoclicker=0;
而(1)
{
如果(GetKeyState(VK_F7)<0)
{
如果(自动单击器==0){
自动舔片器=1;
}
否则{
自动舔片器=0;
}
}
if(autoclicker)//在这里,我需要能够检测是否按下了“F7”,以便将“autoclicker”更改为0
{
SendInput(3,输入,sizeof(输入));
srand(时间(空));
温度=兰德()%77+60;
Sleep(Temp);//随机睡眠时间(~100毫秒)
}
}

在循环中睡眠较少的时间,检查每次迭代中是否有按键。重复繁忙循环中的已接受答案。我不建议这样做。@PaulSanders他们至少不用
Sleep()
来解释替代方法。PS:
GetKeyState
在这里不合适;它返回上次调用
GetMessage
时键的状态。您需要
GetAsyncKeyState
。无法使
Sleep()
过早退出。如果改用
SleepEx()
,则可以通过将APC调用排队到休眠线程来提前“唤醒它”。或者,您可以使用
CreateEvent()
等待事件,然后让另一个线程向事件发送信号,以“唤醒”等待的线程。