Есть ли способ определить, подключен ли монитор?

У меня есть специальное приложение, написанное на C ++, которое контролирует разрешение и другие параметры на мониторе, подключенном к встроенной системе. Иногда система загружается без головы и запускается через VNC, но может быть подключен монитор позже (после загрузки). Если это произойдет, он не будет получать видеосигнал, пока монитор не будет включен. Я обнаружил, что при вызове «displaywitch / clone» монитор включается, но мне нужно знать, когда монитор подключен. У меня есть таймер, который запускается каждые 5 секунд и ищет монитор, но мне нужен API-вызов, который может сказать мне, подключен ли монитор.

Вот немного псевдокода, чтобы описать то, что я после (что выполняется, когда таймер истекает каждые 5 секунд).

if(If monitor connected)
{
ShellExecute("displayswitch.exe /clone);
}else
{
//Do Nothing
}

я пытался GetSystemMetrics(SM_CMONITORS) возвращает количество мониторов, но возвращает 1, если монитор подключен или нет. Есть другие идеи?

Спасибо!

9

Решение

Попробуйте следующий код

BOOL IsDisplayConnected(int displayIndex = 0)
{
DISPLAY_DEVICE device;
device.cb = sizeof(DISPLAY_DEVICE);
return EnumDisplayDevices(NULL, displayIndex, &device, 0);
}

Это вернется true если Windows идентифицирует устройство отображения с индексом (идентификатор AKA) 0 (это то, что панель управления дисплеем используется внутри). В противном случае он вернет false false, Таким образом, проверив первый возможный индекс (который я отметил как аргумент по умолчанию), вы можете выяснить, любой устройство отображения подключено (или, по крайней мере, идентифицировано Windows, что по сути то, что вы ищете).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]