// Die Skalierung des Bildschirm wird ermittelt.


// Getestet mit RS 10.4 unter
Win11


// Variante 1
function TForm1.Skalierung: Integer; 
var 
  dc: HDC; 
  lp: Integer; 
begin 
  dc := GetDC(0); 
  lp := GetDeviceCaps(dc, LOGPIXELSX); 
  result := 100 * lp div 96; 
  releasedc(0, dc); 
end;
 
// Variante 2
// (Da nach einem Update Variante 1 bei mir nicht mehr funtionierte)
function Skalierung: integer; 
var 
  cd: cardinal; 
  reg: TRegistry; 
begin 
  cd := 0; 
  reg := TRegistry.Create; 
  reg.RootKey := HKEY_CURRENT_USER; 
  if reg.OpenKey('Control Panel\Desktop\WindowMetrics', false) then 
    cd := reg.ReadInteger('AppliedDPI'); 
  reg.CloseKey; 
  reg.Free; 
  Result := trunc(cd / 0.96); 
end;

 
// Beispielaufruf 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  i: Integer; 
begin 
  i := Skalierung; 
  ShowMessage('Skalierung: ' + InttoStr(i) + '%'); 
end;
 
Zugriffe seit 6.9.2001 auf Delphi-Ecke