Wie kann ich die Skalierung einer Anwendung mit hoher Auflösung erzwingen?
Stellen Sie sich vor, es gibt eine Anwendung, deren Entwickler sie als hochauflösend erkannt haben, obwohl dies nicht der Fall ist. Wie kann ich die dpi-Skalierung erzwingen?
Stellen Sie sich vor, es gäbe eine Anwendung, bei der Microsoft "
HighDpiAware
" das Kompatibilitäts-Shim angewendet hat, obwohl die Anwendung dies wirklich nicht ist. Wie kann ich die dpi-Skalierung erzwingen?
Wie kann ich Windows zwingen, eine Anwendung mit dpi-Skalierung zu versehen?
Bearbeiten: Was ist eine hochauflösende Skalierung?
Nicht alle Benutzer verwenden Windows mit 96 dpi. Nicht jede Schaltfläche soll 75x23 Pixel groß sein, nicht jede Symbolleiste ist 25 Pixel hoch und nicht jede Baumansicht-Glyphe ist 16x16. Wenn der Benutzer eine andere dpi-Einstellung für Windows gewählt hat, müssen Sie alles entsprechend skalieren.
Das Problem ist, dass fast keine Entwickler ihre Arbeit tun, indem sie die Einstellungen für hohe Auflösung gut handhaben. Bestenfalls bleibt alles "gleich groß", was bedeutet, dass jeder winzig klein erscheint . Im schlimmsten Fall sind die Formulare falsch angeordnet, der Text abgeschnitten und die Steuerelemente nicht sichtbar.
Beginnend mit Windows Vista und der Nutzung der Leistungsfähigkeit von Desktop Composition gab Microsoft die Entwickler auf, die ihre Arbeit erledigten, und lag nun an der Anwendung. Sie teilen Apps mit, dass der Benutzer mit 96 dpi arbeitet. Windows verwendet dann die Grafikkarte und Desktop Composition, um die Formulare zu skalieren.
Pro: Der Inhalt des Formulars wird eine gut lesbare Größe haben.
Con: Alles wird leicht verschwommen sein.
Diese "High-dpi-Skalierungsfunktion" steht nur dem Benutzer zur Verfügung und erfordert:
- Windows Vista oder neuer
- Desktop Composition muss aktiviert sein
- der Benutzer zu deaktivieren "Windows XP-Stil Skalierung verwenden"
- den Benutzer, die Skalierung für Ihre Anwendung nicht zu deaktivieren
Als Entwickler können Sie die hochauflösende Skalierung deaktivieren. Wenn Sie sich die Mühe gemacht haben, Ihre Anwendung richtig zu schreiben, und Sie wissen, dass Sie mit High-dpi richtig umgehen. Sie deaktivieren diese Skalierung, indem Sie Ihrer ausführbaren Datei einen Manifest-Eintrag hinzufügen und erklären, dass Sie " High-dpi-fähig " sind.
Das Thema, wie Ihre Anwendung die Einstellungen des Benutzers (einschließlich Schriftart, Schriftgröße und dpi-Einstellung) berücksichtigen soll, ist eine Frage für stack overflow
. Wie ist die Syntax für den Manifest-Eintrag, der Ihr " High-dpi-Bewusstsein " ausdrückt .
Diese Frage, auf Super-User , ist , wie man ignoriert einen Entwickler, den voranging und hatte einen High-dpi bewusst manifestieren Eintrag, wenn in der Tat die Anwendung ist nicht High-dpi bewusst. Sie forderten Windows auf, die Skalierung zu deaktivieren, testeten die Anwendung jedoch nicht. Es gibt Software mit einem Manifest-Eintrag, der "High-dpi-fähig" ist, und jetzt ist die Anwendung unter "großen Schriftarten" (z. B. 120 dpi) unbrauchbar.
quelle
Antworten:
Hmm. Mein Vorschlag wäre, das Manifest zu bearbeiten und die falsche Deklaration zu entfernen. Und vergessen Sie nicht, den Entwickler darüber zu nerven, wie auch immer Sie können!
Bearbeiten: Beachten Sie, dass es möglich sein sollte, das Manifest einfach neben der ausführbaren Datei zu platzieren, z. B. weil
foo.exe
Sie das Manifest in platzieren würdenfoo.exe.manifest
. Siehe MSDN-Artikel (siehe Abschnitt "Syntax des Dateinamens").quelle
.manifest
Datei Vorrang vor dem Manifest in der ausführbaren Datei. Heutzutage überschreibt jedes in die ausführbare.manifest
Datei integrierte Manifest jede externe Datei. Ich erinnere mich nicht, welches Service Pack von XP es geändert hat - ich denke, es war SP2.Ich habe gerade eine DLL veröffentlicht, die Aufrufe an SetProcessDPIAware einbindet und umleitet. Für Anwendungen, die die DPI-Skalierung durch Code deaktivieren, ist dies eine schnelle und einfache Lösung (im Vergleich zum binären Patchen).
DPIMangler: Blog Post , Quellcode .
quelle
Sie können das Manifest weiterhin bearbeiten. Sie müssen es lediglich in der EXE-Datei selbst bearbeiten. Suchen Sie nach einem Ressourceneditor, der offensichtliche Unterstützung bietet. Ein Beispiel mit rudimentärer Unterstützung ist XN Resource Editor.) Suchen und löschen Sie einfach die Zeile, in der HIGHDPIAWARE erwähnt wird, und speichern Sie die ausführbare Datei.
Stellen Sie jedoch sicher, dass Sie eine Kopie der ausführbaren Datei erstellen, bevor Sie sie bearbeiten!
quelle
Ich frage mich, ob ResizeEnable das ist, wonach Sie suchen?
http://www.digitallis.co.uk/pc/ResizeEnable/
quelle