在XP系统下如何检测新接入的显示器,并将其设置为扩展模式?
目前在做一个软件,运行软件后,再同一张显卡上再接入一个显示器,即刻将其设置为屏幕扩展模式。
目前在检测新接入显示器时卡住了。如果显示器在开机时没有接入,开机后接入的话,程式会无法检测到该显示器。
我检测的方法是通过EnumDisplayDevices来枚举显示器,如果检测到的显示器信息DeviceID(查到该值表示所接入显卡ID)为空。就跳过。具体代码如下:
DISPLAY_DEVICE m_dd[5]; DEVMODE m_dv[5]; int n = 0, i = 0; do { m_dv[i].dmFields = DM_BITSPERPEL | DM_POSITION | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS; flag = EnumDisplayDevices(NULL, i, &m_dd[n], 0); if (flag){ i++; }else{ continue; } if (_tcslen(m_dd[n].DeviceID) == 0) { continue; }//如果没有接入显卡,就跳过 EnumDisplaySettings(m_dd[i].DeviceName, ENUM_CURRENT_SETTINGS, &m_dv[n]); n++; } while (flag && n < 5);
通过代码调试,发现并没有检测到新接入的显示器。但是,在系统的设备管理器中是可以看到该设备的。
色部工口子
11 years, 7 months ago