我需要检查我的电脑显示器是打开或closures在WIN7操作系统
MSDN电源管理文档解释说,您可以在显示器打开或关闭时收到通知。 基本上,你注册了电力广播消息,然后你会得到一个WM_POWERBROADCAST
消息,每当有变化。 有几种不同的GUID用于监视显示状态,具体取决于您使用的Windows版本。
在你的程序开始时(在创建你的主窗口之后),你可以这样做:
HPOWERNOTIFY hPower = RegisterPowerSettingNotification(hwndMain, GUID_SESSION_DISPLAY_STATUS, 0);
(根据您定位的Windows的版本,还有其他GUID选项 。)
然后在你的主窗口程序中:
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;