2
我需要檢查我的電腦顯示器在Win7操作系統進行開啓或關閉如何檢查PC顯示器打開或關閉Windows中的任何工具或事件查看器7
我需要檢查我的電腦顯示器在Win7操作系統進行開啓或關閉如何檢查PC顯示器打開或關閉Windows中的任何工具或事件查看器7
MSDN power management documentation解釋,你可以得到通知,當顯示器打開或關閉。基本上,您註冊了廣播消息,然後在發生變化時您將收到一條WM_POWERBROADCAST
消息。有幾種不同的GUID用於監視顯示狀態,具體取決於您使用的Windows版本。
在你的程序的開始(創建主窗口後),你這樣做:(有choices for the GUID取決於哪個版本的Windows您的目標等)
HPOWERNOTIFY hPower =
RegisterPowerSettingNotification(hwndMain, GUID_SESSION_DISPLAY_STATUS, 0);
然後你的主窗口過程中:
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;
我這樣做,我仍然沒有得到任何權力的消息。可能是什麼問題。我有多個分佈在不同監視器上的OpenGL窗口,嘗試過這種方法但沒有結果.... – alap
仔細檢查我鏈接到的文檔。它看起來已經更新,說GUID_SESSION_DISPLAY_STATUS在Windows 8或Server 2012(及更高版本)中可用,但不適用於早期版本的操作系統。 –
對於較老的操作系統,有GUID_MONITOR_POWER_ON,但只會告訴您主監視器。 –