繁体   English   中英

c ++在Windows上设置监视器超时

[英]c++ set monitor timeout on Windows

我想知道是否有办法在全球范围内从 C++ 程序启用或禁用监视器/屏幕超时? (不过我有一个问题,它必须向后兼容 Windows XP SP3。)

我说的是这个全局设置:

Windows 8 屏幕截图

XP的这个:

XP截图

对于那些感兴趣的人,以下是解决此问题的方法:

调用 CallNtPowerInformation(SystemPowerPolicyAc) API 获取或设置显示超时值,并使用 SYSTEM_POWER_POLICY::VideoTimeout 成员。

一个完整的样本:

bool applyVideoTimeout(DWORD newtimeOut)
{
    SYSTEM_POWER_POLICY powerPolicy;
    DWORD ret;
    DWORD size = sizeof(SYSTEM_POWER_POLICY);

    ret = CallNtPowerInformation(SystemPowerPolicyAc, nullptr, 0, &powerPolicy, size);

    if ((ret != ERROR_SUCCESS) || (size != sizeof(SYSTEM_POWER_POLICY)))
    {
        return false;
    }

    powerPolicy.VideoTimeout = newtimeOut
    ret = CallNtPowerInformation(SystemPowerPolicyAc, &powerPolicy, size, nullptr, 0);

    if ((ret != ERROR_SUCCESS))
    {
        return false;
    }

    return true;
}

如何区分电池和电源?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM