【问题标题】: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)。要禁用屏幕保护程序,应用程序通常会响应此消息。我不知道有什么方法可以发现这一点,除了通过向所有顶级窗口发送消息来强制它。

标签: c++ windows winapi screensaver power-saving


【解决方案1】:

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

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

它的名字是:ScreenSaveActive

键类型为:REG_DWORD(DWORD值)

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

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

希望对你有帮助

【讨论】:

  • HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop 在我的 Windows 8 上不存在。
  • 那你只需要创建它。
  • 并非所有 Windows 注册表项都存在。除非明确指定,否则永远不会制作一些
  • 嗯。对不起,我没有关注你。它如何适用于我原来的问题?
  • 您可以查看注册表查看是否启用了屏保等电源设置
猜你喜欢
  • 2014-09-10
  • 1970-01-01
  • 2023-03-31
  • 2020-10-30
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多