我想知道是否有办法在全球范围内从 C++ 程序启用或禁用监视器/屏幕超时?(不过我有一个问题,它必须向后兼容 Windows XP SP3。)
我说的是这个全局设置:
XP的这个:
我想知道是否有办法在全球范围内从 C++ 程序启用或禁用监视器/屏幕超时?(不过我有一个问题,它必须向后兼容 Windows XP SP3。)
我说的是这个全局设置:
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;
}