Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Windows anweisen die Anwendung zu skalieren (https://www.delphipraxis.net/197905-windows-anweisen-die-anwendung-zu-skalieren.html)

JYPDWhite 17. Sep 2018 16:27

Windows anweisen die Anwendung zu skalieren
 
Hallo zusammen,

ich habe hier eine Anwendung die nicht DPI-Aware ist und wo der Aufwand relativ hoch ist diesen Umstand zu ändern.
Nun ist geplant dass Windows (Windows 10) die Anwendung selbst skaliert mit der Einstellung "System (Erweitert)"
Das ist die Option "Verhalten bei hoher DPI-SKalierung pberschreiben: Skalierung durchgeführt von" im Kompatibilität Reiter.

Nun habe ich natürlich die Möglichkeit bei Programmstart zu prüfen ob für die Anwendung ein Registryschlüssel angelegt ist und wenn nicht diesen anzulegen.Dann müsste das Programm aber neu gestartet werden da Windows die Registryänderung ja vmtl. nicht bei laufenden Prozessen beachtet.
Gibt es eine Möglichkeit z.B. über eine Manifestdatei Windows anzuweisen die Anwendung zu skalieren? Ich habe irgendwie beim googlen dazu nicht so richtig was gefunden.


Ich hoffe ich konnte mein anliegen klar rüber bringen ;-)

Grüße JYPDWhite

Bernhard Geyer 17. Sep 2018 16:29

AW: Windows anweisen die Anwendung zu skalieren
 
Wenn du gar keine passenden (oder nur veraltete XP-)Manifest-Infos hast, so wird Windows automatisch skalieren.

Du darfst dann nicht die Manifest-Option in der IDE aktivieren sondern das eigene Manifest per XML/res-Datei bereit stellen.

himitsu 17. Sep 2018 16:33

AW: Windows anweisen die Anwendung zu skalieren
 
Die Beschreibung zu dem, was diesbezüglich im Manifest möglich ist.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Wenn ich es richtig verstehe, dann würde dein gewünschtes Verhalten dem Folgenden entsprechen.
XML-Code:
<dpiAware>false</dpiAware>
<dpiAwareness>unaware</dpiAwareness>
Und was das "zur Laufzeit" angeht, dann sind dort auch ein paar APIs aufgezählt.
MSDN-Library durchsuchenSetProcessDpiAware (das kennt nur aktivieren, also fällt diese API weg)
MSDN-Library durchsuchenSetProcessDpiAwareness


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 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