如何调用Win32函数获取Windows锁屏超时时间?
获取Windows锁屏后显示屏关闭超时时间的Win32函数方案
要获取锁屏后显示屏自动关闭的超时时间,你需要使用
powrprof.dll中的以下函数组合,而非单独调用CallNtPowerInformation:PowerGetEffectiveScheme:获取当前生效的电源方案GUIDPowerReadACValueIndex/PowerReadDCValueIndex:读取该电源方案中“锁屏后关闭显示器”的AC(接通电源)和DC(电池供电)超时值
对应的关键GUID常量:
- 电源设置子组:
GUID_VIDEO_SUBGROUP={7516b95f-f776-4464-8c53-06167f40cc99} - 锁屏显示器超时设置:
GUID_LOCK_SCREEN_DISPLAY_TIMEOUT={8EC4B3A5-6868-48c2-BE75-4F3044BE88A7}
- 电源设置子组:
代码示例片段(C++):
#include <windows.h> #include <powrprof.h> #pragma comment(lib, "powrprof.lib") DWORD GetLockScreenDisplayTimeout(bool isACPower) { GUID effectiveScheme; DWORD timeout = 0; if (PowerGetEffectiveScheme(NULL, &effectiveScheme) == ERROR_SUCCESS) { if (isACPower) { PowerReadACValueIndex(NULL, &effectiveScheme, &GUID_VIDEO_SUBGROUP, &GUID_LOCK_SCREEN_DISPLAY_TIMEOUT, &timeout); } else { PowerReadDCValueIndex(NULL, &effectiveScheme, &GUID_VIDEO_SUBGROUP, &GUID_LOCK_SCREEN_DISPLAY_TIMEOUT, &timeout); } PowerFreeEffectiveScheme(effectiveScheme); } return timeout; // 返回值单位为秒 }补充说明:
CallNtPowerInformation主要用于读取系统全局电源策略,无法直接获取锁屏场景的细分设置- 该超时值默认在Windows 11中为30秒,可通过系统设置修改
内容的提问来源于stack exchange,提问作者adragomir
相关产品推荐
相关产品推荐

