Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Routine gesucht, die feststellt, ob Monitor an oder aus.

  Alt 31. Okt 2006, 17:03
Moin Zusammen,

nur um die Begrifflichkeit zu korrigieren:
Wenn, dann geht es mit DDC nicht DDE.

Der einfachste Weg die Seriennummer des Monitores herauszubekommen geht über die Registry.
Im Key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\D ISPLAY findet man alle möglichen Monitore, die dem System mal bekannt waren.
Innerhalb dieser Keys gibt es dann noch eine weitere Ebene, in der die Keys ähnlich aussehen wie 6&471624d7&0&11443344&01&00, und unterhalb dieser Keys wiederum gibt es den Key namenes "Device Parameters", in dem sich der Wert EDID befindet, ein Binärwert.
An Offset $48 (also 72 dezimal) beginnt ein Block der sich aus vier Werten zusammensetzt.
Aufbau
Kennung DWORD
Inhalt Array [1..14] of Byte
Kennung DWORD
Inhalt Array [1..14] of Byte
Kennung DWORD
Inhalt Array [1..14] of Byte
Kennung DWORD
Inhalt Array [1..14] of Byte

Das erste Byte des Inhaltes ist bei den in Frage kommenden Einträgen immer 00
Als Kennungen gibt es:
000000FF => Seriennummer
000000FE => Hersteller
000000FC => Modellbezeichnung
Bei diesen drei Kennungen handelt es sich dann um Klartext. Dieser ist mit Blanks auf 13 Byte aufgefüllt.
Die Reihenfolge liegt nicht fest, und die Angaben sind optional, was sogar zur Folge haben kann, dass man eine bestimmte Kennung mehrfach vorfindet, oder eben auch gar nicht.

Wenn sich parallel zum Key "Device Parameters" noch der Key "Control" befindet so hat man den Key erwischt, der aktuell gültige Daten für EDID enthält.

[EDIT]
Der aufwändigere, dafür aber sauberere Weg (da man nicht selber suchen muss ) führt über die SetupApi.
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat