Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auflösung,Frequenz,Icons wiederherstellen ? (https://www.delphipraxis.net/59657-aufloesung-frequenz-icons-wiederherstellen.html)

Vader 26. Dez 2005 18:17


Auflösung,Frequenz,Icons wiederherstellen ?
 
hallo,

muetze1 hat einen code von ferby modifiziert " Auflösung und Frequenz ändern, Desktopicons sichern und alles dann wiederherstellen !

Delphi-Quellcode:
Uses
  ShellAPI,
  registry;         // auch wenn du es nicht wolltest, nun hast doch ein wenig Registry mit drinne - aber nur lesen...

....

Var
  ScreenAlt: TPoint;             // diese solltest du schon haben
  ScreenAltFrequenz : Integer;   // diese kommt neu hinzu

Function ChangeScreen(AWidth, AHeight: Word; AFrequenz: Integer; Const APfad: string): Boolean;
  // modified by Muetze1 
Const
  ENUM_CURRENT_SETTINGS : Cardinal = Cardinal(-1);//$ffffffff; // = -1 
Var
  lpDevMode: TDeviceMode;
  saveiconherstellen: boolean;
  lRegInfo : TRegistry;
Begin
  saveiconherstellen := false;

  If ( AWidth <> 0 ) Then
  Begin
    ScreenAlt.x := Screen.Width;
    ScreenAlt.y := Screen.Height;
    ScreenAltFrequenz := 0;            // diese Variable noch definieren

    If ( EnumDisplaySettings(Nil, ENUM_CURRENT_SETTINGS, lpDevMode) ) Then
    Begin
      If ( ( lpDevMode.dmFields And DM_PELSWIDTH ) > 0 ) Then
        ScreenAlt.x := lpDevMode.dmPelsWidth;
      If ( ( lpDevMode.dmFields And DM_PELSHEIGHT ) > 0 ) Then
        ScreenAlt.y := lpDevMode.dmPelsHeight;
      If ( ( lpDevMode.dmFields And DM_DISPLAYFREQUENCY ) > 0 ) Then
        ScreenAltFrequenz := lpDevMode.dmDisplayFrequency
      Else If ( Win32Platform = VER_PLATFORM_WIN32_WINDOWS ) Then // Win9x/ME
      Begin
        lRegInfo := TRegistry.Create(KEY_READ);
        lRegInfo.RootKey := HKEY_CURRENT_CONFIG;
        Try
          If lRegInfo.OpenKey('\Display\Settings', False) Then
          Begin
            ScreenAltFrequenz := StrToIntDef(lRegInfo.ReadString('RefreshRate'), 0);
          End;
        Finally
          lRegInfo.CloseKey;
          lRegInfo.Free;
        End;
      End;
    End;

    ShellExecute(0, 'open', PChar(APfad + 'saveicon.exe'),'"\s"', nil, SW_Show);
    Sleep(1000);
  End
  Else
  Begin
    saveiconherstellen:=true;
    AWidth   := ScreenAlt.X;
    AHeight  := ScreenAlt.Y;
    AFrequenz := ScreenAltFrequenz;
  End;

  lpDevMode.dmFields    := DM_PELSWIDTH Or DM_PELSHEIGHT;
  lpDevMode.dmPelsWidth := AWidth;
  lpDevMode.dmPelsHeight := AHeight;
  If ( AFrequenz > 20 ) Then // valid? 
  Begin
    lpDevMode.dmDisplayFrequency := AFrequenz;
    lpDevMode.dmFields          := lpDevMode.dmFields Or DM_DISPLAYFREQUENCY;
  End;
  Result := ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL;

  If saveiconherstellen Then
    ShellExecute(0,'open', PChar(APfad + 'saveicon.exe'),'"\r"', nil, SW_Show);

  If Not Result Then
  Begin
    MessageBeep(MB_ICONERROR);
    MessageDlg('Fehler1' +#10#10+ 'Das Programm konnte die Auflösung nicht auf '+inttostr(AWidth)+'x'+inttostr(AHeight)+ ' 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;
ich hab den code von muetze1 ausprobiert, das funzt,die auflösung und frequenz wird
umgestellt, aber wie bekomme ich die alten wieder zurück wenn ich mein programm schließe


1. ist mein funktionsaufruf so richtig ?

Delphi-Quellcode:
ChangeScreen(800,600,85,'c:\saveicon.exe')
2.welchen code muß ich in das ereigniss "onclose" schreiben, das meine alten einstellungen
wiederhergestellt werden ?

mfg vader

Vader 26. Dez 2005 21:02

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
hallo,

keiner eine idee ?

mfg vader

Muetze1 26. Dez 2005 21:23

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
Zitat:

Zitat von Vader
hallo,

keiner eine idee ?

mfg vader

Keine Zeit?

Anscheinend nicht, wenn man nach 3 Stunden wieder pusht, obwohl es nicht erlaubt ist. Im Alter von 35 sollte man vllt. auch ein wenig Geduld haben, oder? Und selbst wenn, der Code ist doch leicht zu durchschauen.

Wiederherstellung der alten Daten erfolgt mit einer Auflösungsweite von 0 - also am besten im OnClose "0, 0, 0," sowie den Pfad zu der EXE angeben.

Vader 27. Dez 2005 07:53

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
hallo,

ich komm aber nicht drauf !!!

mfg vader

fkerber 27. Dez 2005 08:04

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
Hi!

Hast du den Post über dir mal gelesen?
Da steht doch ein Tipp drin, hast du den mal ausprobiert?


Ciao Frederic

Muetze1 27. Dez 2005 12:59

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
Zitat:

Zitat von Muetze1
Wiederherstellung der alten Daten erfolgt mit einer Auflösungsweite von 0 - also am besten im OnClose "0, 0, 0," sowie den Pfad zu der EXE angeben.

Für alle faulen, blinden und schlechten Leser:

Delphi-Quellcode:
ChangeScreen(0, 0, 0, 'c:\saveicon.exe');

Vader 27. Dez 2005 20:30

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
sorry,

hab ich überlesen, aber es funzt nicht, es bleibt die veränderte auflösung und die icons stellen sich
auch nicht zurück, wenn ich das in onclose reinschreibe!

Delphi-Quellcode:
ChangeScreen(0, 0, 0, 'c:\saveicon.exe');
mfg vader

Muetze1 28. Dez 2005 01:15

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
Sicher das OnClose ausgelöst wird? Ansonsten nimm dir eine Form und packe 2 Buttons rauf. Im OnClick des einen verstellst du die Auflösung, im OnClick des anderen stellst du sie wieder her. Also beide Aufrufe mal "per Hand" auslösen. Klappt das denn?

Luckie 28. Dez 2005 06:07

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
Liegt auch die Anwendung saveicon.exe im Root von Laufwerk c:?

Muetze1 28. Dez 2005 10:55

Re: Auflösung,Frequenz,Icons wiederherstellen ?
 
Zitat:

Zitat von Luckie
Liegt auch die Anwendung saveicon.exe im Root von Laufwerk c:?

Die würde aber auch nicht dafür sorgen dei Auflösung zurück zu drehen, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz