Мы пишем программу, которая должна иметь возможность передавать настройки на определенные мониторы, требуя, чтобы у нас были уникальные идентификаторы для каждого устройства отображения. Пока что лучшее, что я могу получить, это запросить дескриптор структуры DEVMODE, возвращаемой EnumDisplayDevices, и посмотреть, содержит ли возвращаемое имя DISPLAY_DEVICE либо «DISPLAY1», либо «DISPLAY2» (мы поддерживаем только два монитора с этим программным обеспечением, и deviceName поле структуры DISPLAY_DEVICE имеет вид \. \ DISPLAYx, где x - натуральное число, минимум 1).
Моя проблема в том, что если кто-то применяет настройки с одного терминала к другому и говорит, по сути, «получить все мои настройки с DISPLAY1 и все мои настройки с моего DISPLAY2 и применить их к DISPLAY1 и DISPLAY2 другого терминала», будет ли это применить настройки к мониторам, подключенным к соответствующим портам? Насколько я могу судить, если подключен только 1 монитор, этому монитору присваивается имя \. \ DISPLAY1, а если подключено два, устройством отображения, подключенным через DVI, является \. \ DISPLAY1, а устройством на VGA является \. \ DISPLAY2.
Я пытался отключать мониторы по одному, переподключать их в разных порядках, перезагружать, перезагружать только с одним подключенным, затем подключать секунду и т. Д. И т. Д., И, кажется, всегда назначает их таким образом. Я не могу заставить его присваивать им противоположные имена. Если это так, то мы должны быть в порядке.
В качестве альтернативы, если кто-нибудь знает способ программно определить, к какому порту подключен монитор (DVI или VGA и т. Д.) С помощью вызовов MSDN, это было бы еще более полезно. Я исчерпал практически все возможные варианты решения этой проблемы.
В сущности, я спрашиваю, правильно ли я понимаю свои предположения о том, как Windows 7 назначает имена дисплеям? Если нет, то как это делается? Есть ли способ изменить это? Если так, то как? Есть ли способ определить порт, к которому подключен монитор?
Кстати, это приложение написано на C ++ с использованием Qt, если это вообще имеет значение.
Спасибо.
-Alex aka LeapDayWilliam