Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Bildschirmauflösung und Farbtiefe ermitteln und ändern (https://www.delphipraxis.net/24110-bildschirmaufloesung-und-farbtiefe-ermitteln-und-aendern.html)

gkoeder 15. Jun 2004 16:17


Bildschirmauflösung und Farbtiefe ermitteln und ändern
 
Hallo!

weiß jemand zufällig, wie man per Code die Auflösung des Bildschirms (und ggf. die Bildwiederholrate) sowie die Farbtiefe erfassen und abändern kann?

Viele Grüße

Gerald

Neuni 15. Jun 2004 16:23

Re: Bildschirmauflösung und Farbtiefe ermitteln und ändern
 
Delphi Source :-D


http://www.delphi-source.de/tipps/system/?id=276

http://www.delphi-source.de/tipps/system/?id=287

gkoeder 15. Jun 2004 16:35

Re: Bildschirmauflösung und Farbtiefe ermitteln und ändern
 
Wow - danke für die schnelle Antwort! Hab' mir die Tipps gleich mal angeschaut; Für die Bildschirmauflösung gibts eine Lösung - nur mit dem setzen der Farbtiefe haperts noch ...

Viele Grüße
Gerald

Muetze1 15. Jun 2004 17:01

Re: Bildschirmauflösung und Farbtiefe ermitteln und ändern
 
Moin!

Is ja nicht das Ding...

Delphi-Quellcode:
function change_resolution(Const AWidth, AHeight, ABpp : Word): boolean;
var
  lpDevMode: TDeviceMode;
begin
  lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
  lpDevMode.dmPelsWidth := AWidth;
  lpDevMode.dmPelsHeight := AHeight;
  lpDevMode.dmBitsPerPel := ABpp;
  Result := ( ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL );
end;
Und hier nochmal eine Deluxe Version, die die Bildwiederholfrequenz mitsetzt, aber nur, wenn du sie auch angibst, ansonsten ändert er nix an der Wiederholfrequenz (besser gesgt, er nimmt dann die Default).

Delphi-Quellcode:
Function change_resolution(Const AWidth, AHeight, ABpp : Word; Const ARefreshRate : Word = 0): Boolean;
Var
  lpDevMode: TDeviceMode;
Begin
  lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
  lpDevMode.dmPelsWidth := AWidth;
  lpDevMode.dmPelsHeight := AHeight;
  lpDevMode.dmBitsPerPel := ABpp;

  If ( ARefreshRate > 0 ) Then
  Begin
    lpDevMode.dmDisplayFrequency := ARefreshRate;
    lpDevMode.dmFields := lpDevMode.dmFields Or DM_DISPLAYFREQUENCY;
  End;

  Result := ( ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL );
End;
MfG
Muetze1

gkoeder 17. Jun 2004 19:36

Re: Bildschirmauflösung und Farbtiefe ermitteln und ändern
 
Zitat:

Zitat von Muetze1
Moin!

Is ja nicht das Ding...

Delphi-Quellcode:
function change_resolution(Const AWidth, AHeight, ABpp : Word): boolean;
var
  lpDevMode: TDeviceMode;
begin
  lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
  lpDevMode.dmPelsWidth := AWidth;
  lpDevMode.dmPelsHeight := AHeight;
  lpDevMode.dmBitsPerPel := ABpp;
  Result := ( ChangeDisplaySettings(lpDevMode, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL );
end;
... snipp ...

MfG
Muetze1

Danke für den Tipp. Das ganze funktioniert richtig gut ... allerdings musste zu Beginn noch die Größe der Datenstruktur definieren ... sonst gibbets böse Falschmeldungen:

lpDevMode.dmSize := SizeOf(lpDevMode);

MfG
Gerald

Muetze1 17. Jun 2004 20:56

Re: Bildschirmauflösung und Farbtiefe ermitteln und ändern
 
Moin!

Zitat:

Zitat von gkoeder
... allerdings musste zu Beginn noch die Größe der Datenstruktur definieren ... sonst gibbets böse Falschmeldungen:

lpDevMode.dmSize := SizeOf(lpDevMode);

Ach Mist! Stimmt - das kommt davon wenn man irgendwelche Links folgt und die nur abändert.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.

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