¿Cómo forzar el escalamiento de alta resolución?

¿Cómo puedo forzar una aplicación a ser alta-dpi de escala?

  • Fingir que hay una aplicación, que los desarrolladores lo han manifestado como high-dpi consciente, cuando en realidad no lo es. ¿Cómo puedo forzar la ampliación de ppp?

  • Imagine que hay una aplicación en la que Microsoft ha aplicado el shim de compatibilidad " HighDpiAware ", cuando la aplicación realmente no lo es. ¿Cómo puedo forzar la ampliación de ppp?

¿Cómo puedo forzar a Windows a aplicar escala de dpi a una aplicación?


Editar: ¿Qué es el escalado de alta resolución?

No todos los usuarios ejecutan Windows en 96dpi. No todos los botones se supone que son 75×23 píxeles, no todas las barras de herramientas son 25pixels de altura, y no todos los glifos treeview es 16×16. Si el usuario ha elegido una configuración de dpi diferente para Windows, debe escalar todo de forma adecuada.

El problema es que casi ningún desarrollador hace su trabajo manejando la configuración de alta resolución. En el mejor de los casos, todo permanecerá "del mismo tamaño", lo que significa que cada aparece diminuto . En el peor de los casos las formas están mal distribuidas, con el texto cortado y los controles no visibles.

Comenzando con Windows Vista, y aprovechando el poder de Composición de Escritorio, Microsoft dejó a los desarrolladores haciendo su trabajo, y ahora mentir a la aplicación. Le dicen a las aplicaciones que el usuario se está ejecutando en 96dpi. Windows utiliza la tarjeta de vídeo y Composición de escritorio para ampliar los formularios.

Pro: el contenido del formulario será de un buen tamaño legible.
Con: todo estará ligeramente borroso.

Esta función de "escala de ppp alto" sólo funciona a discreción del usuario y requiere:

  • Windows Vista o más reciente
  • Composición de escritorio a habilitar
  • El usuario para desactivar "Utilizar escalado de estilo de Windows XP"
  • El usuario no deshabilite la escala para su aplicación

Como desarrollador, puede optar por no aplicar la escala de alto dpi; Si usted tomó el esfuerzo para escribir su aplicación correctamente, y usted sabe que usted manejará high-dpi correctamente. Usted se desactiva de esta escala añadiendo una entrada de manifiesto a su ejecutable, declarando que está " consciente de alta ppp ".

El tema de cómo hacer que su aplicación respete las preferencias del usuario (incluyendo la cara de la fuente, el tamaño de la fuente y la configuración de dpi) es una pregunta para el stack overflow . Como es la sintaxis para la entrada de manifiesto que declara su " alta conciencia de dpi ".

Esta pregunta, en superusuario , es cómo ignorar a un desarrollador que siguió adelante y agregó una entrada de manifiesto consciente de alta ppp, cuando de hecho la aplicación no es de alta ppp consciente. Le dijeron a Windows que desactivara la escala, pero en realidad no probaron la aplicación. Hay software por ahí con una entrada de manifiesto "high-dpi aware", y ahora la aplicación es inutilizable bajo "fuentes grandes" (por ejemplo, 120dpi).

Hmm. Mi sugerencia sería editar el manifiesto y eliminar la declaración incorrecta. Y no se olvide de molestar al desarrollador acerca de lo que puede!

Editar: Tenga en cuenta que debería ser posible colocar simplemente el manifiesto junto al ejecutable, por ejemplo, para foo.exe , colocaría el manifiesto en foo.exe.manifest . Consulte el artículo de MSDN (consulte la sección denominada "Sintaxis del nombre de archivo").

Acabo de lanzar un DLL que ganchos y redirecciona llamadas a SetProcessDPIAware. Para aquellas aplicaciones que deshabilitan la escala de DPI a través del código, esta es una solución rápida y fácil (en comparación con el parcheo binario).

DPIMangler: Mensaje de blog , código fuente .

Usted todavía puede editar el manifiesto, sólo tendrá que editarlo en el archivo .exe en sí. Busque un editor de recursos que tenga soporte de manifiesto. Un ejemplo con soporte rudimentario es XN Resource Editor). Simplemente encuentre y elimine la línea que menciona HIGHDPIAWARE y guarde el archivo ejecutable.

Asegúrese de hacer una copia del ejecutable antes de editarlo, aunque!

Me pregunto si ResizeEnable es lo que estás buscando?

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

    Intereting Posts