Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bildschirmfrequenz auslessen und ändern (https://www.delphipraxis.net/60139-bildschirmfrequenz-auslessen-und-aendern.html)

ferby 3. Jan 2006 17:42


Bildschirmfrequenz auslessen und ändern
 
Hallo,

Ich suche eine möglichkeit die Bildschirmfrequenz (=Bildschirmaktualisierungsrate) auszulesen und zu verändern ohne dabei in irgendeiner weiße die registry zu verwenden.
Ist das möglich? Wenn ja wie?



Bin für jede Hilfe dankbar,
Ferby

Muetze1 3. Jan 2006 17:53

Re: Bildschirmfrequenz auslessen und ändern
 
Moin!

Ja, ab Windows 2000 und neueren Betriebssystemen aus dem Hause Microsoft.

Ermitteln: MSDN-Library durchsuchenEnumDisplaySettings bzw. MSDN-Library durchsuchenEnumDisplaySettings bei MultiMon.
Setzen: MSDN-Library durchsuchenChangeDisplaySettings MSDN-Library durchsuchenChangeDisplaySettingsEx

MfG
Muetze1

ferby 3. Jan 2006 18:32

Re: Bildschirmfrequenz auslessen und ändern
 
Hallo,

mit diesen Seiten kenne ich mich zu wenig aus.... wie bekomme ich das in einen funktionierenden Delphi code???

Mazel 3. Jan 2006 18:52

Re: Bildschirmfrequenz auslessen und ändern
 
Hi, ich habe ein Infoprogramm erstellt und diese Funktion auch sehr lange gesucht (der Code liest die Frequenz nur aus):

Bidschirmwiederholungsfrequenz


Gruß
Mazel

Luckie 3. Jan 2006 18:56

Re: Bildschirmfrequenz auslessen und ändern
 
Zitat:

Zitat von ferby
mit diesen Seiten kenne ich mich zu wenig aus.... wie bekomme ich das in einen funktionierenden Delphi code???

Man könnte ja auch auf die völlig abwegige Idee kommen mit den oben genannten Stichwörtern mal hier im Forum zu suchen. :wall:

ferby 3. Jan 2006 19:34

Re: Bildschirmfrequenz auslessen und ändern
 
Hi,

@ Mazel
Danke, funktioniert super


@ Luckie
Hi, ich habe gerade gesucht aber leider nichts passendes gefunden

ferby 4. Jan 2006 13:51

Re: Bildschirmfrequenz auslessen und ändern
 
Hallo,

kann mir wirklich keiner Helfen?
Ich Suche nach einer möglichkeit die Bildschirmfrequenz zu ändern.....


Ferby

chaosben 4. Jan 2006 13:53

Re: Bildschirmfrequenz auslessen und ändern
 
[dp]auflösung ändern[/dp]

ferby 5. Jan 2006 13:09

Re: Bildschirmfrequenz auslessen und ändern
 
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

Muetze1 5. Jan 2006 13:26

Re: Bildschirmfrequenz auslessen und ändern
 
Meine Meinung dazu: hier


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.

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