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

时间:2012-08-24 21:28:34

标签: c++ winapi screen power-management

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

我在谈论这种全球背景:

Windows 8 screenshot

这个用于XP:

XP screenshot

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

完整的样本:

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;
}