É possível alterar a escala de exibição via linha de comando?

1

Eu tenho um laptop com um monitor de 2560 x 1440, conectado a dois monitores externos de 1080p. O dimensionamento é bom normalmente, com o monitor nativo em 125% e os monitores 1080p em 100%, mas quando eu desacoplar o laptop, às vezes o laptop vai para fator de escala de 200% e eu preciso redefini-lo manualmente nas configurações de exibição.

Eu gostaria de encontrar um comando que emule a configuração aqui, de modo que eu não precise clicar com o botão direito do mouse na área de trabalho e abrir as configurações de exibição toda vez que eu desconectar meus monitores externos:

As únicas chaves de registro / comandos do PowerShell que encontrei para isso exigem que o logout tenha efeito, o que não parece necessário, pois a configuração da GUI pode entrar em vigor imediatamente.

    
por Justin 27.06.2018 / 22:29

1 resposta

2

Abaixo, um script em lote que emula os toques do teclado para manipular a GUI para ajustar as opções Escala e layout e Alterar o tamanho ou texto, aplicativos e outros itens quando é executado. Isso usa ms-settings:display para abrir a tela Exibir e, em seguida, pressiona a tecla uma vez e a seta para cima 5 vezes usando sendkeys para ajustar a escala de acordo. Ele pressionará Alt + F4 nas teclas finais para fechar a tela assim que ela for concluída. Esse método cria um script vb dinâmico com um script em lotes e, em seguida, executa o script vb com cscript para emular pressionando as teclas do teclado.

Script em lote

Observação: Basta salvar isso em um arquivo de texto com a extensão .bat ou .cmd e executá-lo para ser executado.

@ECHO OFF

explorer ms-settings:display
ping -n 2 127.0.0.1 > nul

:VBSDynamicBuild
SET TempVBSFile=%tmp%\~tmpSendKeysTemp.vbs
IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%"
ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >>"%TempVBSFile%"
ECHO Wscript.Sleep 500                                    >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{TAB}{UP 5}"                      >>"%TempVBSFile%"
ECHO Wscript.Sleep 500                                    >>"%TempVBSFile%"
ECHO WshShell.SendKeys "%%{F4}"                           >>"%TempVBSFile%"

CSCRIPT //nologo "%TempVBSFile%"
EXIT

Mais recursos

por 28.06.2018 / 07:41