Comment forcer la mise à l'échelle haute résolution?

27

Comment puis-je forcer une application à être mise à l'échelle haute résolution?

  • Imaginez qu'il existe une application, dont les développeurs l'ont manifestée comme étant à haute résolution, alors qu'elle ne l'est vraiment pas. Comment forcer la mise à l'échelle dpi?

  • Imaginez qu'il existe une application que Microsoft a appliqué le " HighDpiAware" module de compatibilité, alors que l'application ne l'est pas vraiment. Comment forcer la mise à l'échelle dpi?

Comment puis-je forcer Windows à appliquer une mise à l'échelle dpi à une application?


Modifier: Qu'est-ce que la mise à l'échelle haute résolution?

Tous les utilisateurs n'exécutent pas Windows à 96 dpi. Tous les boutons ne sont pas censés mesurer 75 x 23 pixels, toutes les barres d'outils n'ont pas une hauteur de 25 pixels et tous les glyphes d'arborescence ne sont pas 16 x 16. Si l'utilisateur a choisi un paramètre dpi différent pour Windows, vous devez tout mettre à l'échelle de manière appropriée.

Le problème est que presque aucun développeur ne fait son travail en gérant correctement les paramètres haute résolution. Au mieux, tout restera "de la même taille", ce qui signifie que tout semble minuscule . Au pire, les formulaires sont mal disposés, le texte est tronqué et les commandes ne sont pas visibles.

En commençant par Windows Vista et en tirant parti de la puissance de la composition de bureau, Microsoft a abandonné les développeurs qui font leur travail et se tournent désormais vers les applications. Ils indiquent aux applications que l'utilisateur fonctionne à 96 dpi. Windows utilise ensuite la carte vidéo et la composition du bureau pour mettre à l'échelle les formulaires.

Pro: le contenu du formulaire sera d'une belle taille lisible.
Con: tout sera légèrement flou.

Cette fonctionnalité de "mise à l'échelle haute résolution" ne fonctionne qu'à la discrétion de l'utilisateur et nécessite:

  • Windows Vista ou plus récent
  • Composition du bureau à activer
  • l'utilisateur de désactiver "Utiliser la mise à l'échelle de style Windows XP"
  • l'utilisateur de ne pas désactiver la mise à l'échelle pour votre application

En tant que développeur, vous pouvez désactiver la mise à l'échelle haute résolution; si vous avez pris l'effort d'écrire votre application correctement et que vous savez que vous gérerez correctement les ppp élevés. Vous désactivez cette mise à l'échelle en ajoutant une entrée manifeste à votre exécutable, déclarant que vous êtes " conscient de la haute résolution ".

La question de savoir comment faire en sorte que votre application respecte les préférences de l'utilisateur (y compris le visage de la police, la taille de la police et le paramètre dpi) est une question pour stack overflow. Tout comme la syntaxe de l'entrée de manifeste déclarant votre " prise de conscience haute résolution ".

Cette question, sur le super-utilisateur , est de savoir comment ignorer un développeur qui a décidé d'ajouter une entrée de manifeste prenant en charge la résolution élevée, alors qu'en réalité, l'application n'est pas compatible avec la résolution élevée. Ils ont dit à Windows de désactiver la mise à l'échelle, mais ils n'ont pas réellement testé l'application. Il existe un logiciel avec une entrée de manifeste "conscient de la haute résolution", et maintenant l'application est inutilisable sous "grandes polices" (par exemple 120 dpi).

Ian Boyd
la source
Cela m'intéresse également. Nous avons une application critique qui n'est pas compatible avec le dpi et a été initialement conçue pour un écran 800x600. Windows ne le fait pas évoluer par défaut, et cela ne fait aucune différence que nous utilisions XP, Vista ou 7. Puisque notre personnel passe la plupart de son temps dans cette application 800x600, il insiste pour utiliser ses moniteurs LCD 20 " à une résolution de 800 x 600! C'est un énorme gaspillage, et le manque de pixels auto-infligé se met en travers quand ils ont besoin d'utiliser MS Office, IE8, etc.
Miles Erickson
1
Ce n'est que sous Windows Vista que Microsoft a commencé à utiliser Desktop Composition (ce que certains appellent par erreur Aero ) pour utiliser la carte graphique pour mettre à l'échelle des applications qui ne désactivent pas spécifiquement la mise à l'échelle. Il n'y avait pas de mise à l'échelle dans XP et vous ne voulez pas de mise à l'échelle dans Vista 7. Vous voulez que votre application soit correctement écrite. Rendez-vous sur la machine d'un développeur, modifiez sa résolution à 1050 et définissez le dpi sur 168. Tout sera le même énorme zoom en mode tardif, sauf que l'application ne se comportera pas correctement. Dites-leur qu'ils n'obtiennent pas de nourriture ou d'eau jusqu'à ce qu'ils soient réparés.
Ian Boyd
Nous n'avons pas toujours accès aux développeurs qui créent les applications que nous utilisons. Si seulement nous le faisions ...
Cylindrique
Formes = formes?
jiggunjer

Réponses:

5

Hmm. Ma suggestion serait de modifier le manifeste et de supprimer la déclaration incorrecte. Et n'oubliez pas de déranger le développeur comme vous le pouvez!

Edit: Notez qu'il devrait être possible de simplement placer le manifeste à côté de l'exécutable, par exemple pour foo.exe, vous placeriez le manifeste dans foo.exe.manifest. Voir l' article MSDN (regardez dans la section intitulée «Syntaxe du nom de fichier»).

SamB
la source
je suppose que c'est la seule façon de procéder. Inconvénient: cela invalide la signature numérique de l'appliation.
Ian Boyd
@Ian: il semble que vous ne devez mettre le manifeste dans une ressource.
SamB
3
Auparavant, un .manifestfichier avait la priorité sur le manifeste à l'intérieur de l'exécutable. Aujourd'hui, tout manifeste intégré à l'exécutable remplace tout .manifestfichier externe . je ne me souviens pas quel service pack de XP l'a changé - je pense que c'était SP2.
Ian Boyd du
8

Je viens de publier une DLL qui accroche et redirige les appels vers SetProcessDPIAware. Pour les applications qui désactivent la mise à l'échelle DPI via le code, il s'agit d'une solution rapide et facile (par rapport aux correctifs binaires).

DPIMangler: article de blog , code source .

George
la source
6

Vous pouvez toujours modifier le manifeste, il vous suffira de le modifier dans le fichier .EXE lui-même. Recherchez un éditeur de ressources prenant en charge le manifeste. Un exemple avec un support rudimentaire est XN Resource Editor.) Recherchez et supprimez simplement la ligne qui mentionne HIGHDPIAWARE et enregistrez l'exécutable.

Assurez-vous cependant de faire une copie de l'exécutable avant de le modifier!

trlkly
la source
"À la baisse: cela invalide la signature numérique de l'appliation."
Ian Boyd
0

Je me demande si ResizeEnable est ce que vous cherchez?

http://www.digitallis.co.uk/pc/ResizeEnable/

James T
la source
Non, les fenêtres sont déjà redimensionnables. Le problème est lorsque le compositeur compose la fenêtre d'affichage. À l'heure actuelle, il ne fait rien de spécial, car l'application a déclaré qu'il n'avait pas besoin d'être mis à l'échelle. Mais en fait , la fenêtre ne doit être mis à l' échelle.
Ian Boyd