2

我需要检查我的电脑显示器是否在 win7 操作系统中打开或关闭

4

1 回答 1

0

MSDN 电源管理文档解释说,您可以在显示器打开或关闭时收到通知。基本上,您注册了电力广播消息,然后WM_POWERBROADCAST只要有变化,您就会收到一条消息。有几种不同的 GUID 用于监视显示状态,具体取决于您使用的 Windows 版本。

在程序开始时(在创建主窗口之后),您执行以下操作:

HPOWERNOTIFY hPower =
  RegisterPowerSettingNotification(hwndMain, GUID_SESSION_DISPLAY_STATUS, 0);

(GUID 有其他选择,具体取决于您所针对的 Windows 版本。)

然后在您的主窗口过程中:

case WM_POWERBROADCAST:
  if (wParam == PBT_POWERSETTINGCHANGE) {
    const POWERBROADCAST_SETTING *pSetting =
      reinterpret_cast<const POWERBROADCAST_SETTING*>(lParam);
    if (pSetting->PowerSetting == GUID_SESSION_DISPLAY_STATUS) {
      assert(pSetting->DataLength >= sizeof(DWORD));
      DWORD data = *reinterpret_cast<const DWORD*>(&pSetting->Data);
      switch (data) {
        case 0: /* monitor is off */ break;
        case 1: /* monitor is on */ break;
        case 2: /* monitor is dimmed */ break;
        default:  /* ???? */ break;
      }
    }
  }
  break;

如果在任何时候您不再关心电源通知,您可以取消注册:

UnregsisterPowerSettingNotification(hPower);
hPower = NULL;
于 2012-09-29T16:53:11.310 回答