我需要在win7 os中检查我的电脑显示器是打开还是关闭
答案 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;