Como consultar a resolução de hardware NATIVE do monitor primário no Windows?

Preciso encontrar a "melhor" ou resolução nativa para um monitor LCD conectado no Windows (que definirei programaticamente e sei como fazê-lo.) Deixe-me repetir que não preciso da resolução atual do Windows nem preciso me preocupar sobre CRTs / projetores.

Eu já vi isso funcionar com este programa, então eu sei que é possível, apesar dos opositores:http://www.entechtaiwan.com/util/moninfo.shtm

Seria melhor conversar diretamente com o monitor e consultar as informações do EDID. No entanto, eu vi que ele está armazenado em cache no registro e não teria problemas para extraí-lo de HKLM \ SYSTEM \ CurrentControlSet \ Enum \ DISPLAY, mas não consigo descobrir como combinar os dados com o monitor principal atual.

Eu encontrei este programa C em:http://www.tech-archive.net/Archive/Development/microsoft.public.development.device.drivers/2004-08/0294.html e um programa python semelhante:http://www.koders.com/python/fid7FCCE3C908F376DC62F06CAD9B11C6D7C1CFA78F.aspx

Infelizmente, estou tendo muitos problemas para converter o programa C em python, pois o código relevante não parece estar nos módulos win32all. Eu tentava compilá-lo, mas não tinha espaço em disco para um grande compilador e não usava C há anos. Estou um pouco fora do meu elemento com ctypes também.

Meu plano B será usar EnumDisplaySettings () para encontrar o maior valor para a resolução e configurá-lo para isso. Nos PCs que tentei, ele fornece os res corretos, mas ainda pode ser problemático.

Eu preferiria uma solução em python, mas talvez alguém possa me ajudar a modificar o programa C para cuspir a resolução e compilá-la. Desde já, obrigado.

Atualizar:

Eu encontrei uma solução potencial. Agora estou lendo o WMI para encontrar um monitor disponível (não offline), pegando sua identificação de dispositivo PNP e lendo EDID do registro na subchave com o valor de identificação. Depois analiso os dados dos bytes 38 e 39 e calculo. Não é muito limpo, mas estou obtendo resultados. Se esta é uma maneira razoável de fazer isso, vou fechar esta pergunta, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion