Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DPI-Einstellung abfragen / ändern (https://www.delphipraxis.net/114884-dpi-einstellung-abfragen-aendern.html)

adeptus 2. Jun 2008 12:44


DPI-Einstellung abfragen / ändern
 
Hallo,

gibt es einen Weg über Kode die Einstellung der Bildschirm-DPI (meistens 96 oder 120) einzustellen und/oder zu ermitteln? Sei es nun über API oder Registry -Einstellung?

Vielen Dank für jeden Hinweis!

DeddyH 2. Jun 2008 12:48

Re: DPI-Einstellung abfragen / ändern
 
Spontan fällt mir da GetDeviceCaps ein (mit den beiden LogPixels-Konstanten).

adeptus 2. Jun 2008 13:04

Re: DPI-Einstellung abfragen / ändern
 
Zitat:

Zitat von DeddyH
Spontan fällt mir da GetDeviceCaps ein (mit den beiden LogPixels-Konstanten).

Hmmm.. Hab mir das mal angeschaut:


LOGPIXELSX Number of pixels per logical inch along the screen width. In a system with multiple display monitors, this value is the same for all monitors.
LOGPIXELSY Number of pixels per logical inch along the screen height. In a system with multiple display monitors, this value is the same for all monitors.

Das fühlt sich ja so an, als ob es unteschiedliche Einstellungen für width und Height gäbe. Und wie schliesse ich von diesen Werten dann auf die DPI?

adeptus 4. Jun 2008 13:08

Re: DPI-Einstellung abfragen / ändern
 
Keiner 'ne weitere Meinung? 'nen Hinweis? :cry:

DeddyH 4. Jun 2008 13:25

Re: DPI-Einstellung abfragen / ändern
 
Wie, auf die DPI schließen? Bei mir kommt 96 heraus (stimmt ja auch).
Delphi-Quellcode:
procedure ShowDPI;
var DC: hDC;
begin
  DC := GetDC(HWND_DESKTOP);
  try
    ShowMessage(inttostr(GetDeviceCaps(DC,LOGPIXELSY)));
  finally
    ReleaseDC(DC,HWND_DESKTOP);
  end;
end;

bernau 4. Jun 2008 14:14

Re: DPI-Einstellung abfragen / ändern
 
Zitat:

Zitat von adeptus
Das fühlt sich ja so an, als ob es unteschiedliche Einstellungen für width und Height gäbe. Und wie schliesse ich von diesen Werten dann auf die DPI?

GetDeviceCaps wird auch für Drucker verwendet. Einige Drucker haben vertical eine andere Auflösung als horizontal. Deshalb ist es auch gut, daß man die Werte getrennt abfragen kann.
Sie sind aber bei den meisten Druckern und Bildschirmen gleich.

Gerd

adeptus 9. Jun 2008 11:01

Re: DPI-Einstellung abfragen / ändern
 
Zitat:

Zitat von DeddyH
Wie, auf die DPI schließen? Bei mir kommt 96 heraus (stimmt ja auch).
Delphi-Quellcode:
procedure ShowDPI;
var DC: hDC;
begin
  DC := GetDC(HWND_DESKTOP);
  try
    ShowMessage(inttostr(GetDeviceCaps(DC,LOGPIXELSY)));
  finally
    ReleaseDC(DC,HWND_DESKTOP);
  end;
end;

Ok, das funktioniert so weit, danke! Ich habe aber keine "SetDeviceCaps" Funktion gefunden... Darum ging's mir eigentlich vorrangig. Ich würde gerne die DPI-Einstellung in einer Batch-Datei ändern kurz bevor ein entsprechendes Programm welches 120dpi braucht aufgerufen wird und nach Beendigung des Selben wieder 96 einstellen...

DGL-luke 9. Jun 2008 11:09

Re: DPI-Einstellung abfragen / ändern
 
doch, SetDeviceCaps gibts. Sollte dir auch die Windows-API-Doku deiner Wahl sagen.

DeddyH 9. Jun 2008 12:14

Re: DPI-Einstellung abfragen / ändern
 
SetDeviceCaps habe ich auch nicht gefunden. Aber dieser Artikel könnte Dir evtl. weiterhelfen.

adeptus 9. Jun 2008 15:04

Re: DPI-Einstellung abfragen / ändern
 
Zitat:

Zitat von DGL-luke
doch, SetDeviceCaps gibts. Sollte dir auch die Windows-API-Doku deiner Wahl sagen.

Original Zitat aus der MSDN-Website:

Zitat:

Was aber, wenn wir die Bildschirmeinstellungen verändern möchten? Die Suche nach einem GetDeviceCaps-Äquivalent "SetDeviceCaps" bleibt erfolglos, einen direkten Rückwärtsgang zum obigen Vorgehen gibt es also nicht.
:gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Seite 1 von 2  1 2      

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