Hi,
ich hab ein kleines Monitor-Problem, dass ich mit Delphi lösen möchte:
Wenn ich meinen Laptop neustarte (oder den 2. Monitor hinzufüge) stellt sich die Frequenz des 2. Monitors automatisch auf 60 Hz (obwohl Windows in den Einstellungen 85 Hz anzeigt -> S***** Windows
)
Deshalb wollte ich die Frequenz manuell einstellen über:
Delphi-Quellcode:
function NewFreq(XRes, YRes: DWORD;Frequency: Cardinal;Monitor:Integer): Integer;
var
DevMode: TDeviceMode;
dd : TDisplayDevice;
begin
dd.cb := sizeOf(TDisplayDevice);
EnumDisplayDevices(nil,Monitor,dd,0);
EnumDisplaySettings(dd.DeviceName,0, DevMode);
DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
DevMode.dmPelsWidth := XRes;
DevMode.dmPelsHeight := YRes;
DevMode.dmDisplayFrequency := Frequency;
Result := ChangeDisplaySettingsEx(dd.DeviceName, DevMode, 0, CDS_UPDATEREGISTRY, nil);
end;
begin
NewFreq(1024,768,85,1)
end.
Leider funktioniert das nicht ganz korrekt. Führe ich das Programm aus, nachdem ich den Monitor hinzugefügt habe, stellt er sich trotzdem nur auf 60 Hz. (auch wenn ich z.B. 75 Hz einstellen will)
Jetzt kommt etwas außergewöhnliches:
Rufe ich in den Anzeigeoptionen die Erweiterten Einstellungen des 2. Monitors auf und schließe das Fenster wieder, dann funktioniert das Programm korrekt.
Annscheinend benötigt Windows so eine Art Treiber-Initialisierung des 2. Monitors oder so. Vielleicht habt ihr Ideen, wie man diese Problem lösen könnte. Mir fällt nix mehr ein.
Danke