目前在做一个软件,运行软件后,再同一张显卡上再接入一个显示器,即刻将其设置为屏幕扩展模式。
目前在检测新接入显示器时卡住了。如果显示器在开机时没有接入,开机后接入的话,程式会无法检测到该显示器。
我检测的方法是通过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);
通过代码调试,发现并没有检测到新接入的显示器。但是,在系统的设备管理器中是可以看到该设备的。