3

У меня есть ноутбук с дисплеем 2560 x 1440, подключенный к 2 внешним мониторам 1080p. Масштабирование в норме нормально, с родным монитором на 125% и мониторами 1080p на 100%, но когда я отсоединяю ноутбук, иногда ноутбук переходит на коэффициент масштабирования 200%, и мне нужно сбросить его вручную в настройках дисплея.

Я хотел бы найти команду, которая эмулирует настройку здесь, так что мне не нужно щелкать правой кнопкой мыши на рабочем столе и открывать настройки дисплея каждый раз, когда я отключаю свои внешние мониторы:

Единственные ключи реестра / команды PowerShell, которые я нашел для этого, требуют выхода из системы, чтобы вступить в силу, что, по-видимому, не нужно, поскольку настройка GUI может вступить в силу немедленно.

1 ответ1

2

Ниже приведен пакетный скрипт, который будет эмулировать нажатия клавиш, чтобы манипулировать графическим интерфейсом, настраивать параметры « Масштаб» и «Макет» , а также изменять размер или текст, приложения и другие элементы при запуске. При этом используются ms-settings:display чтобы открыть экран дисплея , а затем он нажимает клавишу табуляции один раз и стрелку вверх 5 раз, используя клавиши send для настройки масштаба соответственно. Он будет нажимать Alt+F4 в конце клавиш, чтобы закрыть экран после его завершения. Этот метод создает динамический сценарий vb с помощью пакетного сценария, а затем выполняет сценарий vb с помощью cscript для эмуляции нажатия клавиш клавиатуры.


Пакетный скрипт

Примечание: просто сохраните это в текстовый файл с расширением .bat или .cmd и выполните его для запуска.

@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

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .