Einzelnen Beitrag anzeigen

Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#1

Frequenz des 2. Monitors einstellen

  Alt 22. Aug 2005, 13:55
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
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat