Einzelnen Beitrag anzeigen

ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#22

Re: Auflösung,Frequenz,Icons wiederherstellen ?

  Alt 5. Jan 2006, 13:07
Hallo,

@ Vader

Das kann ich erklären.

Bei der Setup datei istdie Variabel pfad als Constante ss definiert:

const
pfad='C:\Programme\Ferby\Ferby-Fall_II\data\';

aber bei der Zip datei habe ich die exe neu gemacht mit einen anderen pfad, und zwar so:

const
pfad='data\';

deshalb funktionierts, egal wo du das Spiel entpackst.

-------
Noch was zur Auflösung ändern und zur Frquenz wieder herstellen,
Ich habe jetzt meinen eigenen Quellcode erweitert, er ändert die Auflösung und nacher stellt er die alte Auflösung, Bildschirmfrequenz und Desktopsymbole 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;
Danke an alle die mir geholfen haben diesen Quellcode Fertig zu stellen!!


mfg,
Ferby
  Mit Zitat antworten Zitat