Me gustaría crear un atajo de teclado para cambiar rápida y fácilmente la escala de DPI en mi máquina, mediante la creación de una pequeña macro que se ejecute al detectar el atajo de teclado.
En Windows 8.1, la escala de DPI de la pantalla de escritorio se puede configurar a través del panel de control (en la foto a continuación), surtiendo efecto de inmediato. Alternativamente, la escala se puede configurar manualmente en el registro, pero hacerlo requiere que el usuario inicie y cierre sesión o reinicie la máquina para que surta efecto (y solo funciona para imitar la opción "un nivel de escala para todas mis pantallas") .
¿Cómo puedo configurar la escala DPI a través de la línea de comando, o de otra manera mediante programación?
windows
command-line
windows-8.1
dpi
high-dpi
FThompson
fuente
fuente
Let me choose one scaling level...
casilla de verificación, ya que el control deslizante de arriba está atenuado en mi cuaderno.Respuestas:
La clave de registro correcta para supervisar la escala independiente es
HKCU:\Control Panel\Desktop
con el valorLogPixels
. Puede encontrar más información sobre todas las configuraciones de registro relacionadas con DPI aquí: http://technet.microsoft.com/en-us/library/dn528846.aspx#system También hay información para el caso cuando habilitó una escala diferente para cada pantalla .Escribí un pequeño script de PowerShell que cambia la escala de DPI para todas las pantallas dependiendo de la escala actual y realiza el cierre de sesión del usuario, por lo que solo tengo que ejecutar el script cuando coloco mi dispositivo en un monitor diferente.
Creo que puede modificarlo según sus necesidades con la información del artículo de TechNet.
fuente
LogPixels
valor solo se aplica cuando la casilla de verificación "Permítame elegir un nivel de escala para todas mis pantallas" está marcada, algo que había observado al alterar los valores del registro, pero también lo confirma el artículo vinculado de Technet. Además, su solución tiene la advertencia de requerir el cierre de sesión del usuario; los DPI no se actualizan sin que el usuario cierre sesión y vuelva a iniciarla. Entre estos dos inconvenientes, su solución no funciona para mí, pero de todos modos +1 para una excelente respuesta.HKCU:\Control Panel\Desktop\Win8DpiScaling
en1
. De lo contrario, utilizará el factor de escala predeterminado e ignorará el valor enLogPixels
.HKCU:\Control Panel\Desktop
mirarHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Hay un script de PowerShell para cambiar la resolución de pantalla que podría ayudar. No tengo idea si el cambio que hace es inmediato en Windows 8.1, pero con un poco de suerte, este script podría usar la misma API que usa el applet del Panel de control.
El
Set-ScreenResolution.ps1
guión completo está disponible en el Repositorio de guiones , pero es demasiado largo para reproducirlo aquí.Su descripción por el autor se puede encontrar en el artículo:
¡Hola, Scripting Guy! ¿Cómo puedo cambiar la resolución de mi monitor de escritorio a través de Windows PowerShell? .
Puede encontrar información sobre cómo usarlo en el artículo:
Cambio de la resolución de pantalla con Powershell .
fuente