如何在c++中创建一个无限循环?(Windows)

How to make an infinite loop in c++? (Windows)

本文关键字:一个 无限循环 Windows c++ 创建      更新时间:2023-10-16

我需要一个函数来每秒重复一次。两种我都试过了

for (;;) {}

while(true){}

但是当我运行编译后的程序时,函数只运行一次。

对不起,这是全功能

#define WINDOWS_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0500 
#include <windows.h> 
#include <iostream> 
// do something after 10 minutes of user inactivity
static const unsigned int idle_milliseconds = 60*10*1000;
// wait at least an hour between two runs
static const unsigned int interval = 60*60*1000;
int main() {
    LASTINPUTINFO last_input;
    BOOL screensaver_active;
    // main loop to check if user has been idle long enough
    for (;;) {
        if ( !GetLastInputInfo(&last_input)
          || !SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0,  
                                   &screensaver_active, 0))
        {
            std::cerr << "WinAPI failed!" << std::endl;
            return EXIT_FAILURE;
        }
        if (last_input.dwTime < idle_milliseconds && !screensaver_active) {
            // user hasn't been idle for long enough
            // AND no screensaver is running
            Sleep(1000);
            continue;
        }
        // user has been idle at least 10 minutes
        HWND hWnd = GetConsoleWindow(); 
    ShowWindow( hWnd, SW_HIDE ); 
    system("C:\Windows\software.exe");
        // done. Wait before doing the next loop.
        Sleep(interval);
    }
}

此操作只运行一次,而不是继续检查。

while(true){
  //Do something
}

应该工作,但通常你应该避免无限循环,而不是像一样

bool isRunning = true;
while( isRunning ){
  //Do something
}

通过这种方式,您将能够在需要时终止循环。

for(;;)和while(1)这两个循环都用于无限循环。这就是你的程序的样子:

for (;;) // or while(1), doesn't matter
{
    function();
    sleep(1000);
}

如果这对你不起作用,你将不得不提供更多的代码,因为我看不出它不起作用的其他原因。

哦,我必须说sleep()函数在各种平台上的实现方式不同。您必须在工具箱中查找该值是以秒还是以毫秒为单位(如果sleep(1000)不起作用,请尝试sleep(1))。

您可以使用计时器,并将间隔设置为1秒,这将每秒触发一次,并执行您需要的操作。