这可能是迄今为止我在 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,它将从最大值(用户定义)开始减少,直到达到其停止值,该值始终等于 0。发生这种情况时,屏幕会停电。
我已经尝试调试很长时间了,但我似乎找不到解决方案......因为代码比这更复杂,我需要使用更多的空间(我不想要to),我将为您提供一些您可以使用的变量的输入:
- 工作输入:
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).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ ms686298(v=vs.85).aspx