加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 睡眠(x)导致计算机睡眠

发布时间:2020-12-16 07:06:19 所属栏目:百科 来源:网络整理
导读:这可能是我到目前为止在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,
这可能是我到目前为止在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,sizeof(INPUT));
    //Part A ending

    if (s == 2) counter++;
    else counter--;
    cout << counter; //for debugging
    Sleep(i);
}

每当我评论“A部分” – 离开时,它都能正常工作;程序会休眠i秒,具体取决于用户输入.但是,一旦我添加了再次触发返回键的简单方法,它就会使我的整个计算机都处于睡眠状态(AKA,屏幕在i秒内完全变黑).我试过谷歌搜索,但我找不到任何关于这个.

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

我已经尝试了多年的调试,我似乎无法找到解决方案…因为代码比这更复杂,我需要使用更多的空间(我不想要to),我会给你一些输入你可以使用的变量:

>工作输入:counter = 0; stop_value = 21; s = 2; i = 1000;
>输入导致屏幕停电:计数器= 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

解决方法

也可以坚持下去作为答案:)

你是否将ip的类型设置为INPUT_KEYBOARD?你在使用之前在结构上使用ZeroMemory吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读