适用于:Windows 10 神州网信政府版
1.概要:
使用 Win32 API SetThreadExecutionState 可以阻止进入屏幕保护程序,也能阻止屏幕关闭、阻止系统睡眠。这很方便,但也可能造成各种应用都试图阻止屏幕关闭。
2.操作步骤/更多信息:
通过系统自带的 powercfg 来查询相关的应用。以管理员权限打开cmd或者powershell命令行终端:
powercfg /requests
/requests 参数的作用是“列举应用程序和驱动程序的电源请求。电源请求可防止计算机自动关闭显示屏或进入低功耗睡眠模式。”
如果有某个应用或驱动设置了阻止屏幕关闭,那么就会出现在此命令执行的结果里面。
比如在浏览器中播放视频或音频:
当关闭浏览器中播放的视频或音频文件后,再次执行此命令,发现已经没有进程阻止屏幕关闭和系统睡眠:
有时候,应用并没有直接阻止屏幕关闭,而是在一段时间之内试图不断重置睡眠计时器,这种情况,需要使用这个新命令。
powercfg -energy -trace
运行这个命令,需要等待 60 秒,就像下面这样:
注意:等待期间不要移动鼠标或键盘等,因为鼠标和键盘事件也会影响到追踪结果!
等待完成后,它会提示“跟踪完成”,但不会直接提供任何结果。结果都存在了当前执行命令的目录下的 energy-trace.etl 日志文件里面,例如 C:\energy-trace.etl。
这个文件可以用事件查看器打开。
1)右键开始按钮,选择“事件查看器”。
2)操作→打开保存的日志
查找“energy-trace.etl”文件,例如“C:\energy-trace.etl
”,然后打开。
3)在保存的日志中找到可疑记录
由于日志太多,建议右击日志选择“筛选当前日志(L)…”,在筛选器里将事件来源选成“Kernel-Power”,事件 ID 设为 63。
查看几条日志。提示的是:
The application or service 0x0 is attempting to update the system timer resolution to a value of 0x0.
即有程序试图重置系统计时器。
在详细信息里,可以找到是哪个程序:
可以看到,在这条记录里,是“chrome.exe”。所以,可以去chrome浏览器标签里找找,是否有正在播放的视频或音频等。