Gostaria de criar um atalho de teclado para alterar rápida e facilmente a escala de DPI na minha máquina, criando uma pequena macro para executar após a detecção do atalho de teclado.
No Windows 8.1, a escala de DPI da tela da área de trabalho pode ser definida através do painel de controle (foto abaixo), entrando em vigor imediatamente. Como alternativa, a escala pode ser definida manualmente no registro, mas isso exige que o usuário entre e saia ou reinicie a máquina para entrar em vigor (e só funciona para imitar a opção "um nível de escala para todos os meus monitores") .
Como definir a escala de DPI por meio da linha de comando ou programaticamente?
windows
command-line
windows-8.1
dpi
high-dpi
FThompson
fonte
fonte
Let me choose one scaling level...
caixa de seleção, pois o controle deslizante acima está acinzentado no meu notebook.Respostas:
A chave de registro correta para o dimensionamento independente do monitor é
HKCU:\Control Panel\Desktop
com o valorLogPixels
. Mais informações sobre todas as configurações de registro relacionadas ao DPI podem ser encontradas aqui: http://technet.microsoft.com/en-us/library/dn528846.aspx#system Também há informações para o caso em que você ativou o dimensionamento diferente para cada exibição .Eu escrevi um pequeno script do PowerShell que altera a escala de DPI para todos os monitores, dependendo da escala atual e executa o logoff do usuário, por isso só preciso executar o script quando coloco meu dispositivo em um monitor diferente.
Acho que você pode modificá-lo para suas necessidades com as informações do artigo TechNet.
fonte
LogPixels
valor só se aplica quando a caixa de seleção "Deixe-me escolher um nível de escala para todos os meus monitores" está marcada, algo que eu havia observado ao mexer nos valores do registro, mas também é confirmado pelo artigo vinculado da Technet. Além disso, sua solução tem a ressalva de exigir o logout do usuário; os DPIs não são atualizados sem que o usuário efetue logout e logon novamente. Entre essas duas desvantagens, sua solução não funciona muito bem para mim, mas +1 da mesma forma para uma ótima resposta.HKCU:\Control Panel\Desktop\Win8DpiScaling
para1
. Caso contrário, ele usará o fator de escala padrão e ignorar o valorLogPixels
.HKCU:\Control Panel\Desktop
olharHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Há um script do PowerShell para alterar a resolução da tela, o que pode ajudar. Não faço idéia se a alteração é imediata no Windows 8.1, mas com um pouco de sorte esse script pode usar a mesma API usada pelo miniaplicativo do Painel de Controle.
O
Set-ScreenResolution.ps1
script completo está disponível no repositório de scripts , mas é muito longo para ser reproduzido aqui.Sua descrição pelo autor pode ser encontrada no artigo:
Ei, Equipe de Scripts! Como posso alterar a resolução do meu monitor de área de trabalho através do Windows PowerShell? .
Algumas informações sobre como usá-lo podem ser encontradas no artigo:
Alterando a resolução da tela com o PowerShell .
fonte