У меня есть специальное приложение, написанное на C ++, которое контролирует разрешение и другие параметры на мониторе, подключенном к встроенной системе. Иногда система загружается без головы и запускается через VNC, но может быть подключен монитор позже (после загрузки). Если это произойдет, он не будет получать видеосигнал, пока монитор не будет включен. Я обнаружил, что при вызове «displaywitch / clone» монитор включается, но мне нужно знать, когда монитор подключен. У меня есть таймер, который запускается каждые 5 секунд и ищет монитор, но мне нужен API-вызов, который может сказать мне, подключен ли монитор.
Вот немного псевдокода, чтобы описать то, что я после (что выполняется, когда таймер истекает каждые 5 секунд).
if(If monitor connected)
{
ShellExecute("displayswitch.exe /clone);
}else
{
//Do Nothing
}
я пытался GetSystemMetrics(SM_CMONITORS)
возвращает количество мониторов, но возвращает 1, если монитор подключен или нет. Есть другие идеи?
Спасибо!
Попробуйте следующий код
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, что по сути то, что вы ищете).
Других решений пока нет …