Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
Delphi 2010 Enterprise
|
Re: Bildschirmfrequenz auslessen und ändern
5. Jan 2006, 14:09
Hallo,
Habe jetzt meinen code Fertig,
danke.
Der Quellcode änder die Auflösung und stellt beim Beenden die Auflösung, Frequenz und Desktop Icons wieder her:
Delphi-Quellcode:
// ------------------------------------------------------------------------------ // Screen // ---------------------------------
function changescreen(Width, Height: Word; pfad: string): Boolean;
var
lpDevMode: TDeviceMode;
saveiconherstellen: boolean;
begin
saveiconherstellen:=false;
if width<>0 then
begin
ScreenAlt.x:=(screen.width);
ScreenAlt.y:=(screen.height);
refreshalt:=getrefresH;
ShellExecute(0,'open', PChar(pfad + 'saveicon.exe'),'"\s"', nil, SW_Show);
sleep(1000);
end
else
begin
saveiconherstellen:=true;
width:=ScreenAlt.X;
height:=ScreenAlt.Y;
end;
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := Width;
lpDevMode.dmPelsHeight := Height;
lpDevMode.dmDisplayFrequency := refreshAlt;
lpDevMode.dmFields := lpDevMode.dmFields Or DM_DISPLAYFREQUENCY;
Result := ChangeDisplaySettings(lpDevMode,
CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;
if saveiconherstellen then ShellExecute(0,'open', PChar(pfad + 'saveicon.exe'),'"\r"', nil, SW_Show);
end;
if not Result then
begin
MessageBeep(MB_ICONERROR);
MessageDlg('Fehler1' +#10#10+ 'Das Programm konnte die Auflösung nicht auf '+inttostr(width)+'x'+inttostr(height)+ ' umstellen.' +#10+ 'Es könnte sein das der Computer diese Auflösung nicht unterstützt' +#10+ 'Sollte der Computer diese Auflösung doch unterstüzen,' +#10+ 'dann stelle bitte die Auflösung manuel ein und starte das Spiel erneut.', mtError, [mbOK], 0);
Application.Terminate;
end;
end;
function GetRefresh : Integer;
var
hDC : Cardinal;
begin
hDC := GetDC(0);
Result := GetDeviceCaps(hDC, VREFRESH);
ReleaseDC(0, hDC);
end;
Ferby
|
|
Zitat
|