睡眠(x) 会导致计算机进入睡眠状态

Sleep(x) causes computer to sleep instead

本文关键字:状态 计算机 睡眠      更新时间:2023-10-16
这可能是

我迄今为止在C++遇到的最奇怪的事情之一:

while(counter != stop_value)
{
    //Part A starting
    ip.ki.wVk = VK_RETURN;
    ip.ki.dwFlags = 0;
    SendInput(1, &ip, sizeof(INPUT));
    ip.ki.wVk = VK_RETURN;
    ip.ki.dwFlags = KEYEVENTF_KEYUP;
    SendInput(1, &ip, sizeof(INPUT));
    //Part A ending
    if (s == 2) counter++;
    else counter--;
    cout << counter; //for debugging
    Sleep(i);
}

每当我评论"A部分"时,它都可以正常工作;程序休眠i秒,具体取决于用户输入。但是,一旦我添加了再次触发返回键的简单方法,它就会使我的整个计算机进入睡眠状态(又名,屏幕完全黑屏 i 秒)。我尝试过谷歌搜索,但我找不到任何关于这个的信息。

而且,这只是代码的一小部分。我已经添加了 INPUT 类和所有内容。 s也是一个用户定义的变量,(在这种情况下)可以在 2 到 3 之间变化。如果等于 2,计数器的值将设置为 0,并且它将增加,直到达到其最大值(用户定义,设置为 stop-value )。使用此方法时,sleep函数工作正常,只有程序"暂停"i秒。但是,一旦用户将s设置为 3,它将从最大值(用户定义)开始减少,直到达到其停止值(始终等于零)。发生这种情况时,屏幕会停电。

我已经尝试调试很长时间了,但我似乎找不到解决方案......由于代码比这复杂得多,并且我需要使用更多的空间(我不想这样做),因此我将为您提供一些可以使用的变量的输入:

  • 工作输入:counter = 0; stop_value = 21; s = 2; i = 1000;
  • 导致屏幕停电的输入:counter = 20; stop_value = 0; s = 3; i = 1000;

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspxhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx

不妨把它作为答案:)

您是否将ip类型设置为INPUT_KEYBOARD?您是否在使用前在结构上使用ZeroMemory

相关文章: