Просто используйте: `` `c = wmi.WMI () wql =" SELECT * FROM Win32_DesktopMonitor "для элемента в c.query (wql):` ``

ужно найти «лучшее» или собственное разрешение для подключенного ЖК-монитора под Windows (которое я затем установлю программно и узнаю, как это сделать). Позвольте мне повторить, что мне не нужно текущее разрешение Windows и не нужно беспокоиться о ЭЛТ / проекторах.

Я видел, как это работает с этой программой, поэтому я знаю, что это возможно, несмотря на скептиков:http://www.entechtaiwan.com/util/moninfo.shtm

Было бы лучше поговорить напрямую с монитором и запросить информацию EDID. Однако я видел, что он кешируется в реестре, и у него не возникнет проблем с извлечением его из HKLM \ SYSTEM \ CurrentControlSet \ Enum \ DISPLAY, но я не могу понять, как сопоставить данные с текущим основным монитором.

Я нашел эту программу на C:http://www.tech-archive.net/Archive/Development/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 и вычисляю. Не очень чисто, но я получаю результаты. Если это разумный способ сделать это, я закрою этот вопрос, спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос