我需要检查我的电脑显示器是否在 win7 操作系统中打开或关闭
问问题
2723 次
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 回答