如何检查PC监视器是否打开或关闭Windows 7中的任何工具或事件查看器

时间:2012-09-29 11:28:59

标签: windows

我需要在win7 os中检查我的电脑显示器是打开还是关闭

1 个答案:

答案 0 :(得分:0)

MSDN power management documentation说明您可以在打开或关闭显示器时收到通知。基本上,您注册了电源广播消息,然后每当有变化时您都会收到WM_POWERBROADCAST消息。有几种不同的GUID用于监视显示状态,具体取决于您使用的Windows版本。

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

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

(还有其他choices for the 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;