如何判断屏幕保护程序是不是暂时禁用?
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 注册表项都存在。除非明确指定,否则永远不会制作一些
嗯。对不起,我没有关注你。它如何适用于我原来的问题?
您可以查看注册表查看是否启用了屏保等电源设置以上是关于如何判断屏幕保护程序是不是暂时禁用?的主要内容,如果未能解决你的问题,请参考以下文章