在Win7上检测显示器关闭

时间:2013-07-10 19:48:51

标签: windows-7 monitor power-management

基于Win7的自助服务终端,可通过职员访问的交换机关闭显示器电源,我的任务是检测此情况,并根据其他因素执行有序关机或关机/重启或根本不执行任何操作。如果我对物理设计有任何意见,我会以不同的方式做事,但......这就是我必须要做的事情。我发现了一些不同的方法可以检测显示器是否已关闭,但它们都没有工作。我宁愿被发送一个事件,而不是一次/秒投票。

  1. 即使显示器电源关闭,Screen.AllScreens.Length也会继续返回1。
  2. 不会调用SystemEvents.DisplaySettingsChanged。
  3. 不会调用SystemEvents.PowerModeChanged。
  4. 使用GUID_SESSION_DISPLAY_STATUS的RegisterPowerSettingNotification不会导致任何消息(但后来我发现了一些让我认为在Windows 8之前不支持GUID_SESSION_DISPLAY_STATUS的东西 - 是正确的吗?)。
  5. RegisterPowerSettingNotification with GUID_MONITOR_POWER_ON在我启动时给出了一条消息,但在显示器电源关闭时(当监视器重新打开时)也没有给出WM_POWERBROADCAST消息。我对此寄予厚望,因为MS doc实际上说“显示器也开启或关闭” 由用户或系统的屏幕消隐功能。“这是在”移动PC“部分,我们是操作系统的桌面版本,所以它可能不适用于我们?< / LI>

    检测显示器已关闭的其他任何想法?或者常见的陷阱使它看起来不起作用,这可能会影响我的测试?

    我是否必须弄清楚如何说VESA DDC(来自C#)?我想我必须弄清楚的是如何发送一个有效的命令 - 任何响应都意味着监视器打开,没有响应意味着它已关闭。

0 个答案:

没有答案