Entwickler-Ecke

Windows API - Bildschirmfrequenz ändern


Psychoholic - Sa 05.10.02 12:19
Titel: Bildschirmfrequenz ändern
Hallo! Ich habe folgendes Problem. Ich möchte die Bildschirmauflösung ändern. Dies geht mit einer kleinen Funktion dieser Art ganz einfach:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function change_resolution(width, height: word): boolean;
var lpDevMode: TDeviceMode;
begin
  Result := EnumDisplaySettings(nil0, lpDevMode);
  if Result then begin
    lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
    lpDevMode.dmPelsWidth := width;
    lpDevMode.dmPelsHeight := height;
    Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;
  end;
end;

Nur mein Monitor schaltet beim Wechsel immer auf eine niedrigere Bildschirmfrequenz um. Wie kann ich dies verhindern bzw. von Delphi wieder einstellen lassen?

Grüße, Roland

(07.10.02 10:36 Tino) Code-Tags hinzugefügt.
Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt


LCS - Mo 07.10.02 08:05

Hi
im Grunde genommen könntest du mit ChangeDisplaySettings auch die Bildwiederholfrequenz ändern.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Result := EnumDisplaySettings(nil0, lpDevMode); 
if Result then begin 
  lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY; 
  lpDevMode.dmPelsWidth := width; 
  lpDevMode.dmPelsHeight := height; 
  lpDevMode.dmDisplayFrequency := Wiederholfrequenz; 
  Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL; 
end;

Welche Wiederholfrequenzen bei welcher Auflösung zulässig sind, musst du vorher allerdings selbst ermitteln indem du EnumDisplaySettings auswertest.

Gruss Lothar

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt