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).
la source
Réponses:
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 dansfoo.exe.manifest
. Voir l' article MSDN (regardez dans la section intitulée «Syntaxe du nom de fichier»).la source
.manifest
fichier avait la priorité sur le manifeste à l'intérieur de l'exécutable. Aujourd'hui, tout manifeste intégré à l'exécutable remplace tout.manifest
fichier externe . je ne me souviens pas quel service pack de XP l'a changé - je pense que c'était SP2.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 .
la source
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!
la source
Je me demande si ResizeEnable est ce que vous cherchez?
http://www.digitallis.co.uk/pc/ResizeEnable/
la source