¿Cómo puedo forzar que una aplicación tenga una escala alta de ppp?
Supongamos que hay una aplicación, cuyos desarrolladores la manifestaron como alta en dpi, cuando realmente no lo es. ¿Cómo puedo forzar la escala de ppp?
Supongamos que hay una aplicación en la que Microsoft ha aplicado la "
HighDpiAware
" compatibilidad shim, cuando la aplicación realmente no lo es. ¿Cómo puedo forzar la escala de ppp?
¿Cómo puedo forzar a Windows a aplicar escala de ppp a una aplicación?
Editar: ¿Qué es el escalado de alta resolución?
No todos los usuarios ejecutan Windows a 96 ppp. Se supone que no todos los botones tienen 75x23 píxeles, no todas las barras de herramientas tienen 25 píxeles de alto y no todos los glifos de vista de árbol tienen 16x16. Si el usuario ha elegido una configuración de dpi diferente para Windows, debe escalar todo adecuadamente.
El problema es que casi ningún desarrollador hace su trabajo manejando muy bien las configuraciones de alta resolución. En el mejor de los casos, todo se mantendrá "del mismo tamaño", lo que significa que todo parece muy pequeño . En el peor de los casos, las formas están mal distribuidas, el texto se recorta y los controles no son visibles.
Comenzando con Windows Vista y aprovechando el poder de Desktop Composition, Microsoft renunció a que los desarrolladores hicieran su trabajo, y ahora mienten a la aplicación. Dicen a las aplicaciones que el usuario se está ejecutando a 96 ppp. Windows usa la tarjeta de video y la Composición de escritorio para escalar los formularios.
Pro: el contenido del formulario tendrá un tamaño agradable y legible.
Con: todo estará un poco borroso.
Esta función de "escalado de alta resolución" solo funciona a discreción del usuario y requiere:
- Windows Vista o más reciente
- Composición de escritorio para habilitar
- el usuario para desactivar "Usar escala de estilo de Windows XP"
- el usuario no deshabilite el escalado para su aplicación
Como desarrollador, puede optar por salir de la escala de alta dpi; si te esforzaste por escribir tu aplicación correctamente y sabes que manejarás los ppp altos correctamente. Usted opta por esta escala agregando una entrada de manifiesto a su ejecutable, declarando que tiene " alta resolución de dpi ".
El tema de cómo hacer que su aplicación respete las preferencias del usuario (incluida la fuente, el tamaño de fuente y la configuración de ppp) es una pregunta para stack overflow
. Como es la sintaxis para la entrada de manifiesto que declara su " conocimiento de alta dpi ".
Esta pregunta, sobre el superusuario , es cómo ignorar a un desarrollador que siguió adelante y agregó una entrada de manifiesto con alta resolución de ppp, cuando de hecho la aplicación no tiene alta resolución de ppp. Le dijeron a Windows que deshabilitara el escalado, pero en realidad no probaron la aplicación. Existe un software con una entrada de manifiesto "con alta resolución de ppp", y ahora la aplicación no se puede utilizar con "fuentes grandes" (por ejemplo, 120 ppp).
fuente
Respuestas:
Hmm Mi sugerencia sería editar el manifiesto y eliminar la declaración incorrecta. ¡Y no te olvides de molestar al desarrollador al respecto como puedas!
Editar: Tenga en cuenta que debería ser posible simplemente colocar el manifiesto al lado del ejecutable, por ejemplo
foo.exe
, para colocar el manifiestofoo.exe.manifest
. Consulte el artículo de MSDN (consulte la sección "Sintaxis del nombre de archivo").fuente
.manifest
archivo tenía prioridad sobre el manifiesto dentro del ejecutable. Hoy, cualquier manifiesto integrado en el ejecutable anula cualquier.manifest
archivo externo . No recuerdo qué paquete de servicio de XP lo cambió, creo que fue SP2.Acabo de lanzar una DLL que engancha y redirige las llamadas a SetProcessDPIAware. Para aquellas aplicaciones que deshabilitan el escalado de DPI a través del código, esta es una solución rápida y fácil (en comparación con el parche binario).
DPIMangler: publicación de blog , código fuente .
fuente
Todavía puede editar el manifiesto, solo tendrá que editarlo en el archivo .EXE. Busque un editor de recursos que tenga soporte de manifiesto. Un ejemplo con soporte rudimentario es XN Resource Editor.) Simplemente busque y elimine la línea que menciona HIGHDPIAWARE y guarde el ejecutable.
¡Sin embargo, asegúrese de hacer una copia del ejecutable antes de editarlo!
fuente
Me pregunto si ResizeEnable es lo que estás buscando.
http://www.digitallis.co.uk/pc/ResizeEnable/
fuente