Comment forcer la mise à l'échelle haute-dpi?

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

  • Prétendez qu'il existe une application, les développeurs se sont révélés être les utilisateurs à haute définition, alors que ce n'est vraiment pas le cas. Comment puis-je forcer la mise à l'échelle des dpi?

  • Imaginez qu'il existe une application selon laquelle Microsoft a appliqué la HighDpiAware compatibilité " HighDpiAware ", lorsque l'application n'est pas vraiment. Comment puis-je forcer la mise à l'échelle des dpi?

Comment puis-je forcer Windows à appliquer une extension de dpi à une application?


Edit: Qu'est-ce que la mise à l'échelle haute-dpi?

Tous les utilisateurs ne exécutent pas Windows à 96dpi. Tous les boutons ne sont pas supposés être de 75×23 pixels, et toutes les barres d'outils ne sont pas de 25 pixels, et tous les glyphe arborescents ne sont pas 16×16. Si l'utilisateur a choisi un paramètre de dpi différent pour Windows, vous devez tout dimensionner correctement.

Le problème est que presque aucun développeur ne fait son travail en manipulant 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 définis, le texte étant coupé et les contrôles non visibles.

À partir de Windows Vista, et en tirant parti de la puissance de la composition du bureau, Microsoft a renoncé aux développeurs qui font leur travail, et maintenant se trouvent à l'application. Ils disent aux applications que l'utilisateur fonctionne à 96dpi. Windows utilise ensuite la carte vidéo et la composition de bureau pour étendre les formulaires.

Pro: le contenu du formulaire sera de bonne taille lisible.
Con: tout sera légèrement flou.

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

  • Windows Vista ou plus récent
  • La composition du bureau doit être activée
  • L'utilisateur désactive "Utiliser la mise à l'échelle de style Windows XP"
  • L'utilisateur ne désactive pas la mise à l'échelle de votre application

En tant que développeur, vous pouvez désactiver la mise à l'échelle haute-dpi; Si vous avez essayé d'écrire correctement votre candidature, vous savez que vous allez gérer les fichiers haute définition de manière appropriée. Vous excluez cette mise à l'échelle en ajoutant une entrée de manifeste à votre exécutable, en déclarant que vous êtes « haute capacité de copie ».

Le sujet de la façon dont 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 de dpi) est une question pour le stack overflow . De même que la syntaxe de l'entrée manifeste déclarant votre "prise en charge haute définition ".

Cette question, sur super-utilisateur , est de savoir comment ignorer un développeur qui a avancé et ajouté une entrée de manifeste consciente de haute résolution, alors qu'en fait, l'application n'est pas prise en charge par haute résolution. Ils ont dit à Windows de désactiver la mise à l'échelle, mais ils n'ont pas testé l'application. Il existe un logiciel là-bas avec une entrée de manifeste "high-dpi aware", et maintenant l'application est inutilisable sous "grandes polices" (p. Ex. 120dpi).

    Hmm. Ma suggestion serait de modifier le manifeste et de supprimer la déclaration incorrecte. Et n'oubliez pas d'avouer le développeur à propos de ce que vous pouvez!

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

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

    DPIMangler: publication du blog , code source .

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

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

    Je me demande si ResizeEnable est ce que vous cherchez?

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