Как автоматически изменить масштаб экрана DPI при переключении на настройку нескольких мониторов?

3807
gronostaj

У меня есть ноутбук с диагональю 14 "1920 × 1080 и 24" с разрешением 1920 × 1200. Разница в плотности пикселей огромна.

Когда я использую большой экран в качестве основного, а ноутбук - в качестве дополнительного, я бы хотел, чтобы меньший экран был настроен на масштабирование 150%, чтобы я мог использовать его с комфортом. Но когда я вдали от своего рабочего стола и внешний экран отключен, я бы хотел, чтобы ноутбук автоматически переключился на 100% масштабирование, чтобы максимально увеличить площадь рабочего стола.

Как я могу сделать так, чтобы Windows автоматически переключала масштабирование DPI при подключении или отключении внешних экранов?

Я могу использовать стороннее программное обеспечение, если это необходимо, но я бы предпочел использовать встроенные функции Windows.

Я использую Windows 10 Pro версии 1703.

1
Я не думаю, что есть какая-то функция Windows, чтобы делать то, что вы хотите. Насколько сильно ты этого хочешь? Вы * могли бы * сделать что-то с PowerShell, но это, вероятно, будет чудовищно сложным. lifesaspanner 6 лет назад 0
@lifesaspanner Ну, я оценил свою потребность в этом в 50 очков репутации, оплаченных за вознаграждение;) Это может быть полезно для меня, но у меня нет острой потребности в этом. gronostaj 6 лет назад 1
@gronostaj В настоящее время я работаю над аналогичным проектом, использующим пакетные файлы для вызова сценариев powershell, но мой касается яркости монитора. Я должен был зарезать его к началу следующей недели, поэтому, если на тот момент ответа не будет, я, по крайней мере, поделюсь с вами своими исследованиями и процессами. Это должно быть абсолютно возможно с помощью PowerShell, но это будет боль за спиной. jcam3 6 лет назад 0
@ jcam3 Это может быть интересно посмотреть! Если вам это нужно, [ScreenBright] (http://www.softpedia.com/get/Desktop-Enhancements/Other-Desktop-Enhancements/ScreenBright.shtml) может контролировать яркость экрана внешних дисплеев с помощью DDC / CI и имеет интерфейс командной строки. Я использую его с [SE-TrayMenu] (http://se-soft.com/lang/en/) для управления яркостью из области уведомлений. gronostaj 6 лет назад 0
@gronostaj Мне нужно поближе взглянуть на это приложение, выглядит интересно. То, что я пытаюсь сделать, это в основном 3-5-секундное снижение яркости, повторяемое каждые 20 минут или около того. Идея состоит в том, чтобы иметь автоматическое ненавязчивое напоминание о том, чтобы сделать перерыв на экране время от времени для снятия усталости глаз. Имеет потенциал для приложения в стиле pomodoro, но сначала нужно заставить его работать. jcam3 6 лет назад 1
Downvoter, пожалуйста, объясните, что не так с этим вопросом. gronostaj 6 лет назад 0

1 ответ на вопрос

0
Appleoddity

Вы не можете изменить масштабирование DPI автоматически, потому что это требует от вас выхода из системы и входа в систему.

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

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

Если вы хотите расширить это, вот информация о чтении информации монитора с Powershell: https://blogs.technet.microsoft.com/heyscriptingguy/2013/10/03/use-powershell-to-discover-multi-monitor- Информация/

А вот информация об изменении ключа реестра конкретного пользователя. Это понадобится, потому что если вы запустите свой скрипт, когда вы не вошли в систему, или во время запуска ваш куст реестра не будет загружен. https://www.pdq.com/blog/modifying-the-registry-of-another-user/

Объедините все это вместе с некоторой изобретательностью, и вы можете запланировать запуск этого сценария при выходе из системы и при запуске компьютера. Сложность в том, что вам всегда нужно будет выполнять новый вход в систему, чтобы новые настройки вступили в силу, и для меня это самый большой недостаток в этом.

Теперь лучшим решением может быть изменение фактического разрешения экрана, которое можно выполнить без выхода из системы: https://blogs.technet.microsoft.com/heyscriptingguy/2010/07/07/hey-scripting-guy-how-can -i-изменение-мой-рабочий стол-монитор разрешение, через-окна-PowerShell /

Многие программы не работают должным образом с нестандартным DPI, и поэтому, если вы спросите меня, изменение разрешения экрана является лучшим решением.

Так что у вас есть это. Все ресурсы для создания вашего нового скрипта для автоматизации этого. Теперь вы можете посмотреть, можете ли вы найти кого-нибудь на http://stackoverflow.com, чтобы помочь вам с этим. :)

«Вы не можете изменять масштабирование DPI автоматически, потому что для этого требуется выход и выход из системы». Это больше не так. Это относится только к устаревшему масштабированию. Windows 10 может изменить масштабирование на лету. Daniel B 6 лет назад 0
Извините, но вы не правы по этому поводу. Windows всегда корректирует DPI, но затем указывает, что вам нужно выйти, чтобы завершить изменение. Попробуй, увидишь. Просто сам подтвердил это на Windows 10. Appleoddity 6 лет назад 0
В частности, сообщение гласит: «Некоторые приложения не будут реагировать на масштабирование, пока вы не выйдете из системы». И так оно и есть. Масштабируется мгновенно. Большинство программ отвечают правильно. Мало что нет. Daniel B 6 лет назад 0
Справедливо. Но мне не удалось найти API для изменения DPI, и я только предполагаю, что это из-за требования выхода из системы и входа (даже если только для определенных приложений) и несовместимости, которую демонстрируют некоторые программы. Appleoddity 6 лет назад 0
Выход из системы - не вариант для меня, это прерывает мой рабочий процесс. Я хочу, чтобы DPI менялось незаметно при изменении настроек экрана. gronostaj 6 лет назад 0
Я только что установил дисплей 4k (как 2-й монитор для старого ноутбука, который я даже не думал, что смог управлять им) в первый раз. Windows 10 позволит мне обновить настройки DPI для этого монитора, и он обновится сразу. Но для экрана ноутбука это дает мне предупреждающее сообщение. Все еще озадачен. Simon 5 лет назад 0

Похожие вопросы