如何知道windows系統所接的顯示器的個數?顯示器是泛指,包括投影儀,應該說顯示設備更合理些。網上找了些方法,篩選後找到較爲簡單的三個,供參考。windows
主要使用了GetSystemMetrics、EnumDisplayMonitors和EnumDisplayDevices這幾個函數,結合顯示設備DISPLAY_DEVICE的屬性,找出顯示設備的個數。函數
使用GetSystemMetrics最簡單:code
int dspNum = ::GetSystemMetrics(SM_CMONITORS);
使用EnumDisplayMonitors也簡單,代碼以下:get
int dspNum = 0; BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) { dspNum += 1; } EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, NULL);//加到主函數執行就能夠了
EnumDisplayDevices稍複雜:it
bool bFlag = true; int dspNum = 0; DISPLAY_DEVICE ddDisplay; DEVMODE dmDevMode; ZeroMemory(&ddDisplay, sizeof(ddDisplay)); ddDisplay.cb = sizeof(ddDisplay); ZeroMemory(&dmDevMode, sizeof(dmDevMode)); dmDevMode.dmSize = sizeof(dmDevMode); while (bFlag) { bFlag = EnumDisplayDevices(NULL, dspNum, &ddDisplay, 0); bFlag = bFlag & EnumDisplaySettings(ddDisplay.DeviceName, ENUM_CURRENT_SETTINGS, &dmDevMode); if (bFlag) { dspNum += 1; } }
若是接兩個顯示器,設置系統處於複製模式(Clone/duplicate),則上述三種方法都失效,只能找到一個顯示設備。io