Nach viel Forschung konnte ich mein Problem beheben .. Danke für die wertvollen Informationen Yahia.
Zuerst müssen wir die EDID-Daten finden. Die physikalischen Anzeigeinformationen sind tatsächlich für das Betriebssystem über EDID (Extended Display Identification Data) verfügbar. Eine Kopie des EDID-Blocks wird in der Windows-Registrierung gespeichert. Das Problem bestand jedoch darin, die korrekte EDID zu erhalten, da in der Registrierung Informationen über alle Monitore gespeichert sind, die zu irgendeinem Zeitpunkt mit dem System verbunden waren. Also, zuerst verwenden wir eine WMI-Klasse "Win32_DesktopMonitor", und durch eine einfache SQL-Abfrage greifen Sie die PNP-Geräte-ID, um einen verfügbaren Monitor zu finden (nicht offline). Wir können dann in die Registrierung graben, um die Daten zu finden.
` 'für Monitor in wmiquery (' Select * from Win32_DesktopMonitor '):
regkey = (' HKLM \ SYSTEM \ CurrentControlSet \ Enum \‘ + monitor.PNPDeviceID + '\ Device Parameters \ EDID') edid = get_regval (regkey) '`
Zweitens ist es notwendig, die Daten zu analysieren. Die Basis-EDID-Information einer Anzeige wird innerhalb einer 128-Byte-Datenstruktur übermittelt, die relevante Hersteller- und Betriebsdaten enthält. Die meisten dieser Informationen sind für uns uninteressant.
die native Auflösung wissen wir in der DTD (Detaillierte Timing-Descriptor), die bei Byte beginnt = 54
Es folgt die Logik zum Auffinden der maximalen Auflösung von der EDID
starten müssen suchen ` dtd = 54 # Startbyte des detaillierten Timing-Desc.
horizontalRes = ((edid [dtd + 4] >> 4) < < 8) | edid [dtd + 2] verticalRes = ((edid [dtd + 7] >> 4) < < 8) | edid [dtd + 5] res = (horizontalRes, verticalRes) `
Die erhaltenen Werte sind Hex-Werte, die in Dezimal konvertiert werden können, um die NATIVE RESOLUTION in Pixel zu finden.
Dank Hoffe, es Sachin
@ yahia..Thanku so mch :) –
@SachinVerma Sie sind willkommen :-) – Yahia