首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使系统进入睡眠状态&再次从睡眠中自动恢复(编程),无需任何手动“鼠标单击或键盘点击”。

如何使系统进入睡眠状态&再次从睡眠中自动恢复(编程),无需任何手动“鼠标单击或键盘点击”。
EN

Stack Overflow用户
提问于 2013-08-14 07:56:44
回答 1查看 1.1K关注 0票数 0

我的问题是继续我以前的问题"SetSuspendState() API never returns in Win8

我正在Win8 8/Win8.1 m/c上运行我的VC++代码。

我的目的是让系统进入睡眠状态&再次将系统从睡眠中自动恢复,无需任何手动“鼠标单击或键盘点击”。但我无法实现“让系统入睡,因此当然不会使系统从睡眠中恢复”。使用下面的调用SetSuspendState(),系统将永远休眠,而不是睡眠。

我再次粘贴代码片段以快速引用::

代码语言:javascript
复制
int wait = 100;
LARGE_INTEGER WaitTime;
    WaitTime.QuadPart = wait;
    WaitTime.QuadPart *= -10000000;

HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
        if(0 == SetWaitableTimer(hTimer, &WaitTime, 0, NULL, NULL, TRUE))
        {
            res = false;
            return res;
        }
        if(0 == SetSuspendState(FALSE, FALSE, FALSE))
        {
            res = false;
            return res;
        }

在这里,我调用"SetSuspendState() API,它提供了使系统进入睡眠状态的选项&自动从睡眠中获取它,但是系统将进入休眠状态::

SetSuspendState(假,假,假)

有人能帮助我解决这个问题吗?我如何让我的系统“按程序”进入睡眠状态,然后在没有手动“鼠标点击或键盘点击”的情况下自动从睡眠中恢复。

EN

回答 1

Stack Overflow用户

发布于 2017-08-08 15:49:20

在执行睡眠之前,我们应该确保系统支持所需的睡眠状态,并且应该启用唤醒计时器,使用下面的代码进行同样的操作。

代码语言:javascript
复制
//Check support
    SYSTEM_POWER_CAPABILITIES sysPowCab = {0};
    if (CallNtPowerInformation(SystemPowerCapabilities, NULL, 0, &sysPowCab, sizeof(SYSTEM_POWER_CAPABILITIES)) != 0)
        {
            return false;
        }
        if (!sysPowCab.SystemS3)
        {
            return false;
        }
    return true;

//Enable allow wake up timer
    GUID *pPwrGUID;
    GUID subGUID = GUID_SLEEP_SUBGROUP;
    GUID BriGUID = GUID_ALLOW_RTC_WAKE;

    DWORD ret = PowerGetActiveScheme(NULL, &pPwrGUID);
    if (ret != ERROR_SUCCESS)
    {
        return false;
    }

    ret = PowerWriteACValueIndex(NULL, pPwrGUID, &subGUID, &BriGUID, 1);
    if (ret != ERROR_SUCCESS)
    {
        return false;
    }
    return true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18226118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档