如何判断屏幕保护程序是不是暂时禁用?

Posted

技术标签:

【中文标题】如何判断屏幕保护程序是不是暂时禁用?【英文标题】:How to tell if screensaver is temporarily disabled?如何判断屏幕保护程序是否暂时禁用? 【发布时间】:2013-07-30 08:19:42 【问题描述】:

例如,当通过 Google Chrome 浏览器播放 YouTube 视频或 Windows Media Player 中的任何视频/声音时,如果在用户的控制面板中设置了屏幕保护程序,两者都会暂时禁用屏幕保护程序。这只发生在视频播放期间或播放暂停之前。

有没有办法知道在这种情况下屏幕保护程序(和省电)被禁用了?

PS。我正在用 C++ 编写代码。

【问题讨论】:

您对该主题进行了哪些研究? @MatsPetersson:我的想法是使用 SPI_GETSCREENSAVEACTIVE,但这似乎不起作用...... 当屏幕保护程序超时时,系统会向所有顶层窗口发送WM_SYSCOMMAND(带有SC_SCREENSAVE)。要禁用屏幕保护程序,应用程序通常会响应此消息。我不知道有什么方法可以发现这一点,除了通过向所有***窗口发送消息来强制它。 【参考方案1】:

有一个注册表值将禁用屏幕保护程序用户。

密钥位于:HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop

它的名字是:ScreenSaveActive

键类型为:REG_DWORD(DWORD值)

要禁用屏幕保护程序,请将值设置为 0,当您的应用程序完成后将其设置回 1

如果密钥不存在,只需创建一个。要通过 C++ 编辑注册表,有几个步骤。

打开注册表:RegOpenKeyEx

查询值:RegQueryValueEx

/* 做一些有价值的事情*/

重新设置值:RegSetValueEx

关闭注册表:RegCloseKey

希望对你有帮助

【讨论】:

HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop 在我的 Windows 8 上不存在。 那你只需要创建它。 并非所有 Windows 注册表项都存在。除非明确指定,否则永远不会制作一些 嗯。对不起,我没有关注你。它如何适用于我原来的问题? 您可以查看注册表查看是否启用了屏保等电源设置

以上是关于如何判断屏幕保护程序是不是暂时禁用?的主要内容,如果未能解决你的问题,请参考以下文章

在录制屏幕捕获视频时暂时禁用在输入字段中显示自动填充值

暂时禁用此应用的 Google 登录

如何在现代浏览器中临时禁用 XSS 保护以进行测试?

如何禁用 spring-security 登录屏幕?

iPhone - 暂时禁用键盘

禁用 UIScrollView 手势