![]() |
Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Ich habe eine Legacy App, die nicht DPI aware ist + auf hochauflösenden Bildschirmen mit >100% Skalierung uU winzig klein angezeigt wird. Über Anklicken des Programm-Icons/Eigenschaften/Kompatibilität/Hohe DPI EInstellungen ändern - auf System(erweitert) setzen kann man das entschärfen.
Meine Frage: Wie kann ich das schon beim Installieren setzen oder kann ich das in der EXE selbst schon festlegen? Danke jede Antwort! |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Was hast du denn in den Projektoptionen eingestellt?
Optionen -> Anwendung -> Manifest |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
"Legacy" = Delphi 2006, da gibt es das leider noch nicht.
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
Zitat:
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
Deshalb der Workaround mit den Einstellungen und "Hohe DPI Skalierung überschreiben" auf "System (erweitert)" stellen. Dann wird die App vom System auf 150% skalierte, zwar unscharf, aber lesbar. Und ja: Genau diesen Schritt würde ich gern automatsieren bzw der App schon mitgeben. Ich hätte da das Manifest als Ausgangspunkt gesehen. |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
Es gibt unzählige dieser alten Anwendungen und alle laufen auf 4k Monitoren ohne Probleme - wenn auch etwas unscharf. Man muss also diese Einstellung nicht bei jeder dieser Apps machen. Warum dann in deinem Fall? |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Grundsätzlich kann man sich das Manifest auch selbst erstellen und als Ressource einbinden.
So alte Delphis kennen viele Dinge noch nicht. Seit XP gibt es zwar dieses Manifest, aber es hat über die Jahre viele Funktionen dazu bekommen. * Kontrolle über DPI und Skalierung * Angabe, zu welcher Windows-Version dein Programm kompatibel ist. Ansonsten entscheidet Windows, ob und welche Virtualisierungen/Umleitungen/Funktionen deinem Programm zur Verfügung stehen. * uvm. ![]() ![]() |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
![]() Führt das nicht zum Erfolg müssen weitersuchen. Hast du mal versucht, die Anwendung umzubenennen? |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Wie erwähnt wurde: Wenn deine App alt ist, dann ist sie DPI unaware und dann skaliert Windows die Fenster gemäss der eingestellten Skalierung. Ändere doch diese und prüfe was passiert.
Via ![]() Eventuell hast du irgendwann einmal nach Rechtsklick auf die .exe unter Eigenschaften die DPI Einstellungen verändert (?). Es wäre sicher auch nützlich zu prüfen, ob doch ein Mainfest eingebaut ist. Dies kannst du (falls in .exe eingebaut) zum Beispiel ![]() sigcheck -m <deine.exe> tun. Mehr Infos dazu findest du ![]() |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Liste der Anhänge anzeigen (Anzahl: 2)
Neu kompiliert + nicht signiert etc:
Task-Manager sagt: Unbekannt in der Spalte DPI. Sysinternals gibt aus:
Code:
Und das Phänomen gibt es ja auch auf den Kunden-PCs + die haben die Einstellungen noch nie geändert.
Verified: Unsigned
Link date: 23:22 19.06.1992 Publisher: n/a Company: dato Denkwerkzeuge Description: nut.s nutritional.software Product: n/a Prod version: 1.0.0.0 File version: 1.0.0.45 MachineType: 32-bit Und so sieht das aus: Einmal mit den unveränderten Eigenschaften und einmal mit geänderten DPI Einstellungen - Skalierung 150% |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Es liegt aber definitiv nicht daran, dass Delphi 2006 generell ein solches Problem hat. Ich habe gerade testweise ein neues Projekt damit erstellt und es wird skaliert wie erwartet.
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Vielleicht weil das ein XP-Rechner ist?
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Bei XP gibt es aber weder die Möglichkeit zu skalieren, noch eine Kompatibilitätseinstellung für Hohe DPI. Lediglich die Schriftgröße lässt sich einstellen.
Wenn es bei dir mit einem einfachen D2006 Programm reproduzierbar ist, dann häng doch so ein Programm einfach mal hier an. |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Ich hatte nicht recht. Ein neu kompiliertes Programm, das nur aus einem Form (und damit keinen Bibliothekscode verwendet) besteht, verhält sich so, wie Ihr behauptet habt. Da habt Ihr mir schon mal geholfen. :- )
Irgendwo in den Tiefen unseres Codes versteckt sich also ein "Hi! Ich bin DPI aware". Das muss irgendeine 3rd Party Lib sein. Wie könnte ich das finden? |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Die DevEx Library macht das.
Code:
Das gehört zu einer Initialisierungsroutine, die im Initialization-Teil aufgerufen wird.
if Win32MajorVersion >= 6 then
begin FUser32DLL := GetModuleHandle(user32); SetProcessDPIAware := GetProcAddress(FUser32DLL, 'SetProcessDPIAware'); if Assigned(SetProcessDPIAware) then SetProcessDPIAware; end; Verstehe ich nicht - warum tun die das? Die wissen doch nichts über den Rest der Software und die anderen Komponenten. |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
Schön dass du es doch noch gefunden hast. Es ist auch interessant zu sehen, wie sich die eigentliche Frage "Wie kann ich beim Installieren die DPI Eigenschaften setzen?" entwickelt hat zu "Verstehe ich nicht - warum tun die das?" |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Das wird aber unter XP gar nicht ausgeführt! Und wenn dann würde es System-DPI aware setzen (
![]() |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
Welche DX Version verwendest Du denn? Die aktuelle hat das so jedenfalls nicht mehr drinnen. |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
Sieht man schon an deren Hooks und wie sie mit anderen globalen Variablen umgehen. |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Womit ich aber wieder zur Ausgangsfrage zurückkehre. Den Code von DevEx möchte ich nicht ändern, daher bleibt meine Frage aufrecht. Würde ein Manifest, das ich mit ausliefere, das lösen? Und welchen Inhalt müsste das Manifest haben?
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Du könntest auch versuchen SetProcessDPIAware(0 {PROCESS_DPI_UNAWARE}) aus der Unit Winapi.ShellScaling aufzurufen.
Das sollte dann auch möglichts im initialization gemacht werden. Die Unit Winapi.ShellScaling wird es mit D6 nicht geben, aber die könntest du dafür aus deinem aktuellen Delphi kopieren. Ich selber nutze SetProcessDPIAware auch, da der Kunden dann testen kann, was im ab besten gefällt. Aber ob man das mehrfach mit anderen Werten setzen kann habe ich nicht probiert.:gruebel: |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Zitat:
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Kannst Du auf die Version 1.58 vom DexExpress wechseln? Ab da ist das wohl ausgebaut.
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Und auch die Version ist schon über 10 Jahre alt - oder irre ich mich da?
|
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Die neueren Versionen von DevExpress unterstützen vermutlich kein D2009 mehr.
Ich würde den Code auch ausbauen. Oder zumindest auskommnetieren. |
AW: Wie kann ich beim Installieren die DPI Eigenschaften setzen?
Ja, mal sehen. Ist wahrscheinlich am besten so. Danke jedenfalls für die Hilfestellungen. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 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