Como alterar a escala de DPI da tela automaticamente ao mudar para a configuração de vários monitores?

1

Eu tenho um laptop de 14 "1920 × 1080 e uma tela de 24" 1920 × 1200. A diferença de densidade de pixels é enorme.

Quando estou usando a tela grande como tela principal e o laptop como tela adicional, gostaria que a menor fosse ajustada para 150% de escala para que eu possa usá-la confortavelmente. Mas quando estou longe da minha mesa e a tela externa é desconectada, gostaria que o laptop alternasse automaticamente para 100% de escala para maximizar a área da área de trabalho.

Como faço para o Windows alternar a escala de DPI automaticamente quando telas externas são conectadas ou desconectadas?

Eu estou bem com o uso de software de terceiros, se necessário, mas prefiro manter os recursos internos do Windows.

Estou usando o Windows 10 Pro versão 1703.

gronostaj
fonte
Acho que não há nenhum recurso do Windows para fazer o que você deseja. Quão mal você quer isso? Você pode fazer algo com o PowerShell, mas provavelmente será monstruoso demais.
ben_re 17/07/19
11
@lifesaspanner Bem, eu avaliei minha necessidade por 50 pontos de reputação pagos com uma recompensa;) Poderia ser útil para mim, mas não tenho uma necessidade ardente disso.
18717 gronostaj
@gronostaj Atualmente, estou trabalhando em um projeto semelhante usando arquivos em lotes para chamar scripts do PowerShell, mas as minhas preocupações monitoram o brilho. Eu deveria tê-lo acertado no início da semana que vem, por isso, se não houver uma resposta nesse momento, vou pelo menos compartilhar minha pesquisa e processo com você. Isso deve ser absolutamente possível através do PowerShell, mas será uma dor no seu traseiro.
jcam3
@ jcam3 Isso pode ser interessante de se ver! Se isso lhe for útil , o ScreenBright pode controlar o brilho da tela de monitores externos via DDC / CI e possui uma interface de linha de comando. Estou usando-o com o SE-TrayMenu para controlar o brilho da área de notificação.
gronostaj
11
@gronostaj Vou ter que dar uma olhada mais de perto nessa aplicação, parece interessante. O que estou tentando fazer é basicamente uma redução de brilho de 3 a 5 segundos em loop a cada 20 minutos. A idéia é ter um lembrete automático e não intrusivo para interromper a tela de vez em quando para aliviar a tensão ocular. Também tem potencial para um aplicativo no estilo pomodoro, mas é necessário fazê-lo funcionar primeiro.
jcam3

Respostas:

1

Você não pode alterar a escala de DPI automaticamente, pois exige que você faça logoff e logon.

Aqui está um bom tópico sobre o uso do PowerShell para definir a chave de registro de DPI e alternar entre dois DPIs um pouco mais rápido. Você ainda precisa fazer logoff, e o script automatiza isso.

https://stackoverflow.com/questions/10365394/change-windows-font-size-dpi-in-powershell

Se você quiser expandir isso, aqui estão informações sobre como ler as informações do monitor com o Powershell: https://blogs.technet.microsoft.com/heyscriptingguy/2013/10/03/use-powershell-to-discover-multi-monitor- em formação/

E, aqui estão informações sobre como alterar a chave do Registro de um usuário específico. Isso será necessário porque, se você executar o script enquanto não estiver conectado, ou durante a inicialização, a seção do registro não será carregada. https://www.pdq.com/blog/modifying-the-registry-of-another-user/

Combine tudo isso com alguma engenhosidade e você poderá agendar esse script para ser executado no logoff e na inicialização do computador. A parte complicada é que você sempre precisará fazer um novo logon para que as novas configurações entrem em vigor e, para mim, essa é a maior desvantagem sobre isso.

Agora, uma solução melhor pode ser alterar a resolução de exibição real, que pode ser feita sem fazer logoff: https://blogs.technet.microsoft.com/heyscriptingguy/2010/07/07/hey-scripting-guy-how-can -i-mude-a-minha-monitor-de-mesa-resolução-via-windows-powershell /

Muitos programas não funcionam corretamente com um DPI fora do padrão; portanto, se você me perguntar, alterar a resolução da tela é uma solução melhor.

Então aí está. Todos os recursos para criar seu novo script para automatizar isso. Agora você pode ver se consegue encontrar alguém em http://stackoverflow.com para ajudá-lo. :)

Appleoddity
fonte
“Você não pode alterar o dimensionamento de DPI automaticamente porque exige que você efetue logoff e logon.” Isso não é mais verdade. Aplica-se apenas à escala herdada. O Windows 10 pode alterar a escala rapidamente.
Daniel B
Desculpe, mas você está errado sobre isso. O Windows sempre ajusta o DPI, mas indica que você precisa sair para concluir a alteração. Experimente, você verá. Acabei de confirmar eu mesmo no Windows 10.
Appleoddity
11
Mais especificamente, a mensagem diz: “Alguns aplicativos não responderão ao dimensionamento até que você saia.” - E é assim que é. Escala instantaneamente. A maioria dos programas responde corretamente. Poucos não.
Daniel B
Justo. Mas não consegui localizar uma API para modificar o DPI e presumo que seja por causa do requisito de logoff e logon (mesmo que apenas para determinados aplicativos) e pela incompatibilidade que alguns programas exibem.
Appleoddity
Fazer logoff não é uma opção para mim, isso interromperia meu fluxo de trabalho. Quero que o DPI mude perfeitamente quando a configuração da tela for alterada.
gronostaj