Danke erstmal für eure Antworten.
Leider bekomme ich es nicht gebacken:
Egal ob ich
ChangeDisplaySettings oder
ChangeDisplaySettingsEx nehme, ich erhalte immer: DISP_CHANGE_BADMODE (The graphics mode is not supported.)
Folgender Code:
Delphi-Quellcode:
function SetResolution(DeviceName: PChar; Width, Height: Word; Freq :Cardinal): String;
var lpDevMode: TDeviceMode;
begin
if EnumDisplaySettings(DeviceName, 0, lpDevMode) then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY;
lpDevMode.dmPelsWidth := Width;
lpDevMode.dmPelsHeight := Height;
lpDevMode.dmDisplayFrequency := Freq;
case ChangeDisplaySettingsEx(DeviceName, lpDevMode, 0, CDS_UPDATEREGISTRY, nil) of
DISP_CHANGE_SUCCESSFUL: Result := 'DISP_CHANGE_SUCCESSFUL';
DISP_CHANGE_BADFLAGS: Result := 'DISP_CHANGE_BADFLAGS';
DISP_CHANGE_BADMODE: Result := 'DISP_CHANGE_BADMODE';
DISP_CHANGE_BADPARAM: Result := 'DISP_CHANGE_BADPARAM';
DISP_CHANGE_FAILED: Result := 'DISP_CHANGE_FAILED';
DISP_CHANGE_NOTUPDATED: Result := 'DISP_CHANGE_NOTUPDATED';
DISP_CHANGE_RESTART: Result := 'DISP_CHANGE_RESTART';
end;
end;
end;
procedure TForm5.FormCreate(Sender: TObject);
var Device: TDisplayDevice;
begin
Device.cb := SizeOf(Device);
if EnumDisplayDevices(nil, 1, Device, 1) then
Caption := SetResolution(Device.DeviceName, 800, 480, 60);
// Caption := Device.DeviceName;
end;
Komischerweise, als ich es mit 800x600 probiert habe, wurde die Auflösung
des ersten Monitors geändert. Hier macht es auch durchaus Sinn, wenn 800x480 "not supported" ist, da dieser über DVI angeschlossen ist und hier übertragen wird, welche Auflösungen gültig sind. Bei dem Zweitmonitor (über VGA) aber anscheinend nicht, hier müsste 800x480 ja gehen, aber komischerweise ändert dieser Code ja die Auflösung des ersten Monitors...
Wenn ich
Device.DeviceName ausgebe, erhalte ich aber: \\.\DISPLAY2
Also müsste es doch der zweite sein?
Zitat von
Florian H:
Zitat von
Martin K:
da gibts so nen ATI-Catalyst Center, aber den will ich ned installieren, weil der dann auch neue Treiber mit drauf macht und damit hatte ich nur Probleme (Bild friert kurzzeitig ein, etc.) Mit den Windows-Standardtreibern funzt es am besten!
Scheinbar nicht?
Die Standardtreiber sind da wirklich etwas unflexibel, mit den Treibern der Grafikkarten-Hersteller hat man aber deutlich mehr Möglichkeiten.
Wenn da das Bild einfriert, hast du wohl entweder eine sehr neue oder sehr alte Grafikkarte? Ansonsten werden solche Bugs doch eigentlich schnell behoben, hast du die aktuellste (ggf Beta-) Version schon ausprobiert?
Also ich will da nix mehr mit dem ATI-Zeugs rumprobieren (schlechte Erfahrungen). Meine Karte ist wohl eher etwas älter (ATI Radeon X300 SE) und ich hatte immer das Gefühl, dass es bei jeder neuen Treiberversion von ATI immer schlimmer wurde (mit dem Einfrieren), kann aber auch sein dass das Einfrieren erst kam, seit dem ich den (ersten) Monitor mit einer relativ hohen Auflösung (1920x1200) hatte. Jedenfalls gabs bei den Windows-Standardtreibern nie Probleme diesbezüglich, alles läuft flüssig
(okay, das mit der Auflösung geht halt ned
)
War nicht nur das Einfrieren sondern noch andere Sachen, z.B. Scrollen bei großen Dokumenten war viel langsamer, etc...
Zitat von
scrat1979:
Ich benutze das Tool
UltraMon und bin super zufrieden damit. Müsste GraKa-unabhängig sein!!!
Hier kann ich immerhin auch andere Auflösungen einstellen, aber 800x480 ist nicht dabei...
640x480 oder 720x480 geht, wobei meiner 720x480 nicht unterstützt.