在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);

通过代码调试,发现并没有检测到新接入的显示器。但是,在系统的设备管理器中是可以看到该设备的。

vc++ 显示器 windows

色部工口子 11 years, 8 months ago

Your Answer