有什么方法可以检测到禁用屏幕保护程序的方法吗?


19

是否有任何Windows应用程序将确定哪个进程阻止屏幕​​保护程序激活?


1
欢迎来到超级用户。您正在使用哪个版本的Windows?
Raystafarian'2

1
屏幕保护程序无法激活可能是由三个不同的问题引起的:(1)一个程序专门阻止了屏幕保护程序,(2)鼠标正在阻止屏幕保护程序,因为它是由于光学传感器上的毛发(或脏球)“移动”了)或将其栖息在桌子/便笺本等的边缘,或者(3)程序或鼠标阻止了电源管理选项的激活,从而间接停止了屏幕保护程序。我不知道有什么程序可以列出故意阻止屏幕保护程序/电源设置的其他软件,但是鼠标问题很容易检查。
Synetech

1
^同意,没有看到寻找哪个程序的程序。程序或进程通常可以停止。遇到相同问题时,我将屏幕保护程序(或其他电源选项)设置为非常短,然后通过启动和停止操作进行测试。另外,设备管理器中的某些“设备”具有“电源管理”选项卡,这些设备将控制“允许此设备唤醒计算机”,因此当程序选项用尽时,可以继续使用设备选项。
Psycogeek

2
infosecblog.org/2011/03/windows-7-screensaver-timeout 组策略,将其保留的Flash和Vmware&Powercfg替代。
Psycogeek

2
做一个屏幕保护程序Preview,或使用像直接在pretentiousname.com/miscsoft/index.html#ScreenSave(screensave)中踢它的许多小程序这样的程序,可以帮助发现阻止它退出或阻止它发生的原因。 。这样可以节省时间。
Psycogeek

Answers:


13

powercfg内置在Windows中,可让您控制和查看许多电源管理设置。

powercfg -energy -trace

这将创建一个非常详细的电源管理事件日志energy-trace.etl。使用事件查看器打开它,并按事件源:Kernel-Power过滤日志,包括事件ID:62。

这应该给您以下事件:

应用程序或服务\ Device \ HarddiskVolume1 \ games \ Steam \ Steam.exe已使用代码0x3覆盖了用户电源管理设置。

该代码可能会有所不同,具体取决于是否阻止了屏幕保护程序,监视器休眠或其他状态转换。


我收到“无法加载电源效率诊断库(energy.dll)”。为什么会这样呢?(电源服务已启动)
Sanjay Manohar,2013年

1
如果这使其他人感到不高兴:打开energytrace.etl打开Event Viewer| 点击Event Viewer (Local)树| Action| Open Saved Log| 打开C:\Windows\System32\energytrace.etl 告诉它转换为新的日志格式。在Windows 10上运行
。– candied_orange

3
在Windows 10中,只需运行powercfg / energy即可创建一个网页。
编程教授

8

powercfg /requests从管理命令提示符运行。例如,我的印刷:

DISPLAY:
[PROCESS] \Device\HarddiskVolume8\Games\Origin\Origin.exe
Playing video

SYSTEM:
[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0900&SUBSYS_10438560&REV_1000\4&9793a48&0&0001)
An audio stream is currently in use.

AWAYMODE:
None.

这表明Origin正在播放视频,这阻止了屏幕保护程序的运行。


1

有时只需将屏幕保护程序(而不是类型)上的时间更改为其他时间,例如从10分钟减少到1分钟,然后再返回到之前的时间,屏幕保护程序才能正常运行。


1

感谢W1N9Zr0向我指出正确的方向!

在我的情况下,它是XP Pro(SP3)计算机,因此“能源”开关不可用,但是,“ devicequery”开关指示它是鼠标还是键盘。从使用的PS / 2键盘切换到USB键盘后,屏幕保护程序(和其他电源选项)会根据设置启动。

注意:将屏幕保护程序设置为1分钟时,有时它会启动,因此我知道它正在运行。超过1分钟,屏幕保护程序将永远无法启动。


0

我发现罪魁祸首通常是媒体播放器。您可能以为只有在播放视频时才能使用,但是我有一些音乐播放器无法提供屏幕保护程序。例如,我今天打开并暂停了Amazon Music和Groove,只是发现一个小时后我的屏幕仍未锁定。

我不确定应该归咎于哪一个,但是我怀疑它们是通过运行的IDE和浏览器造成的,两者都确实使屏幕锁定。


-2

我不知道有任何程序可以执行此操作,但是查找方法是通过GetThreadExecutionState()函数,如果线程当前正在阻止屏幕保护程序被激活,则该函数将保留值ES_DISPLAY_REQUIRED。

如果将此功能应用于系统中的所有线程,然后在找到的线程上调用GetProcessIdOfThread,则将发现正在阻塞屏幕保护程序的进程。


1
没有“ GetThreadExecutionState()”。
詹姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.