Мне нужно найти «лучшее» или собственное разрешение для подключенного ЖК-монитора под Windows (которое я затем установлю программно и знаю, как это сделать). Позвольте мне повторить, что мне не нужно ни текущее разрешение Windows, ни надо беспокоиться о ЭЛТ / проекторах.
Я видел, как она работает с этой программой, поэтому я знаю, что это возможно, несмотря на скептиков:
http://www.entechtaiwan.com/util/moninfo.shtm
Лучше всего поговорить напрямую с монитором и запросить информацию EDID. Однако я видел, что он кешируется в реестре и у него не возникнет проблем с извлечением его из HKLM \ SYSTEM \ CurrentControlSet \ Enum \ DISPLAY, но я не могу понять, как сопоставить данные с текущим основным монитором.
Я нашел эту программу на C:
http://www.tech -archive.net / Архив / Разработка / microsoft.public.development.device.drivers / 2004-08 / 0294.html
и аналогичная программа на Python:
http://www.koders.com/python/fid7FCCE3C908F376DC62F06CAD9B11C6D7C1CFA78F.aspx
К сожалению, у меня много проблем с преобразованием C-программы в python, так как соответствующий код, похоже, отсутствует в модулях win32all. Я бы попытался скомпилировать его, но у меня не было места на диске для большого компилятора, и я не использовал C годами. Я немного не в себе с ctypes.
Мой план B будет заключаться в том, чтобы использовать EnumDisplaySettings (), чтобы найти наибольшее значение для разрешения и установить его равным этому. На компьютерах, которые я пробовал, он дает правильное разрешение, но это все еще может быть проблематичным.
Я бы предпочел решение на python, но, возможно, кто-то мог бы помочь мне изменить программу на C, чтобы выложить разрешение и скомпилировать его. Заранее спасибо.
Обновление:
Я нашел потенциальное решение. Сейчас я читаю WMI, чтобы найти монитор, который доступен (не в автономном режиме), захватывает его идентификатор устройства PNP и считывает EDID из реестра в подразделе со значением id. Затем я анализирую данные для байтов 38 и 39 и вычисляю. Не очень чисто, но я получаю результаты. Если это разумный способ сделать это, я закрою этот вопрос, спасибо.