Nachdem ich mich weiter "umgeschaut" habe, vermute ich, dass EnumDisplayDevices (im "zweiten" Aufruf) die "richtigen" Monitornamen liefert, wenn die zugehörigen Monitortreiber installiert wurden. Benutzt man die windowsinternen Treiber, so liefert EnumDisplayDevices auch nur "PnP-Monitor (Standard)" zurück und man kann die "echten" Monitornamen nur aus der Registry auslesen:
\Registry\Machine\System\CurrentControlSet\Enum\Di splay\xxx\yyy\Device Parameters\EDID
(xxx und yyy sind im zweiten Aufruf von EnumDisplayDevices in DeviceID enthalten.)
Getestet unter Delphi2007 mit zwei Monitoren:
Fehler in der Funktion "GetMonitorEDID"
Delphi-Quellcode:
n := Pos('
MONITOR\', s);
if n <> 1
then
raise Exception.Create('
DeviceID?');
// ==> finally
Es wird immer die
Exception ausgelöst, da
0 zurück gibt.
Die Zeile muss geändert werden in
n := Pos('MONITOR\', Uppercase(s));
Bitte entschuldigt...