Есть ли способ изменить разрешение экрана Windows через командную строку?
Я использую программу Microsoft Live Mesh для удаленного доступа к ПК под управлением Windows 7, работающему на 2 экранах: один с разрешением 1920x1080, а другой с разрешением 1920x1200.
Я получаю к ним доступ через старый ноутбук с разрешением 1024x1078. В результате появляются такие крошечные значки / команды, что трудно попробовать изменить разрешение экрана с 2 дисплеев с высоким разрешением на один дисплей с низким разрешением.
Было бы здорово, если бы был способ командной строки сделать это. Или, возможно, есть способ через живую сетку, чтобы сделать это. Есть идеи?
10 ответов
Я нашел образец сценария Windows Powershell, предоставленный Microsoft Technet, который может изменить разрешение экрана.
Я обнаружил, что лучший способ вызвать его - использовать отдельный скрипт Powershell, который выглядит следующим образом:
## This loads the function (defined in another script)
. C:\[YOUR-PATH]\Set-ScreenResolution
## invoke with width and height
Set-ScreenResolution -Width 1680 -Height 1050
(Обратите внимание, что я сохранил скрипт Microsoft как Set-ScreenResolution.ps1
)
Затем из командной строки или Пуск-> Выполнить вы можете вызвать второй скрипт Powershell, который я назвал Invoke-Set-ScreenResolution.ps1
как это -noexit
Параметр param хорош в первую очередь для отладки, но вы можете удалить его позже, в зависимости от того, хотите ли вы закрыть окно командной строки):
powershell -noexit -ExecutionPolicy Bypass & C:\[your-path]\Invoke-Set-ScreenResolution.ps1
Я использовал комбинацию Qres.exe и Sleep.exe (поместите их в папку Windows) в пакетных файлах запуска, чтобы изменить разрешение для 2 пользователей. Фактический сценарий выглядит следующим образом:
@echo off
sleep 2
QRes.exe /x:1280 /y:960
(В то время как копия в низком разрешении Qres.exe /x:800 /y:600
)
-------------------------------------------------- -------------------------------------------------- ---------------------------
-------------------------------------------------- -------------------------------------------------- ---------------------------
Если вы хотите, чтобы ваши иконки оставались там, где вы хотите... читайте дальше.
Вам понадобится еще две загрузки:
-> Задержка запуска:
http://www.snapfiles.com/php/download.php?id=103272&a=7130353&tag=7329208&loc=2
-> DesktopOK
http://www.softwareok.com/?Download=DesktopOK&goto=../Download/DesktopOK.zip
Установите Startup Delayer и разместите DesktopOK, где хотите, я использовал мою папку "user". Организуйте свой рабочий стол так, как вы хотите, чтобы он был при каждой перезагрузке.
В DesktopOK перейдите в "Параметры" и установите флажок "Восстановить при загрузке Windows", щелкните правой кнопкой мыши вновь созданную "Компоновку значков" и выберите "Использовать для: Восстановление при загрузке Windows".
На этом этапе вам также необходимо установить флажок "Запустить DesktopOK с окнами". Позднее две опции будут автоматически отключены при запуске Delayer.
Теперь найдите DesktopOK в Startup Delayer и щелкните правой кнопкой мыши "Delay".
Теперь осталось сделать только одну вещь - создать загрузочный пакетный файл.
@echo off
sleep 2
QRes.exe /x:1280 /y:960
sleep 1
"C:\Program Files\r2 Studios\Startup Delayer\Startup Launcher.exe" /LaunchApps=Common
Конечно, вам нужно поместить его в папку автозагрузки, потому что процесс с иконками настолько обширен, потому что DesktopOK не может обрабатывать переключение разрешения и хочет перемещать значки во время изменения разрешения, поэтому нам нужно отложить запуск реестра, и это единственный способ, который я нашел. Я не смею утверждать, что это лучший способ, но я утверждаю, что это работает, я не нашел другого пути и сам придумал этот процесс. Он обходит каждый аспект ситуации, заменяя значки там, где они принадлежат каждому пользователю.
Спасибо за гибкость Microsoft!
Попробуйте Display Changer 2, который может это сделать, а также запустите программу и измените разрешение обратно, когда он остановится (что вы МОЖЕТЕ работать с сеткой, но YMMV)
Ни у одного из уже упомянутых инструментов не было всего, что мне было нужно, поэтому я нашел собственное решение: ChangeScreenResolution.exe
Примеры:
Изменить разрешение экрана всех мониторов на 800x600px
ChangeScreenResolution.exe /w=800 /h=600
Измените разрешение экрана всех мониторов на 800x600 пикселей с частотой обновления 60 Гц и глубиной цвета 32 бита.
ChangeScreenResolution.exe /w=800 /h=600 /f=60 /b=32
Установите глубину цвета дисплея с индексом от 1 до 16 бит
ChangeScreenResolution.exe /b=16 /d=1
Краткий обзор опций:
Possible options (you can set OR query)
Setting options
/w=<width> Width in pixel eg 800
/h=<height> Height in pixel eg 600
/f=<frequency> display refresh rate eg 60
/b=<bpp> bits per pixel eg 32
Querying options
/l list all connected display devices
/m list all available mode settings
Filtering options
/d=<device> devices to modify/query, separated by comma, eg:
all (default)
0 (monitor with index 0, see option /l)
0,2 (monitors with index 0 and 2)
\\.\DISPLAY1 (name of display, see option /l)
Хотя кто-то уже упоминал nircmd от Nirsoft, лучшим инструментом Nirsoft для этого является MultiMonitorTool.
Он поддерживает несколько мониторов, сохраненные конфигурации, 32 и 64 бит, изменения в разрешении, активации и ориентации и т. Д.
Стоит отметить решение через встроенный wmic
командование ме
wmic desktopmonitor create screenheight=1024, screenwidth=768
Хотя может привести к:
ERROR:
Description = Provider is not capable of the attempted operation
в некоторых "провайдерах"
Существует функция PoweShell, которая делает то, что описано здесь.
Set-DisplayResolution
[-Width] <Object>
[-Height] <Object>
[-Force]
[<CommonParameters>]
Командлет Set-DisplayResolution изменяет разрешение экрана для Windows Server® 2012/2016. Укажите ширину и высоту в пикселях. Если вы не используете параметр Force, перед изменением параметров командлет выдаст запрос. Вы можете использовать командлет Get-DisplayResolution для просмотра текущего разрешения.
Я хочу добавить к следующему ответу: /questions/354081/est-li-sposob-izmenit-razreshenie-ekrana-windows-cherez-komandnuyu-stroku/354091#354091
- Если вам нужны два нестандартных разрешения на 2 экранах, например — 1920х1440 и 1390х720 и они не отображаются в настройках Windows, — вы не сможете переключиться на эти разрешения. Используйте , чтобы добавить собственные разрешения в таблицу «Подробные разрешения» в приложении CRU для каждого экрана. После добавления пользовательских разрешений вам необходимо запустить инструмент restart.exe/restart64.exe, входящий в состав CRU-1.5.2CRU-1.5.2 , чтобы зафиксировать эти изменения в Windows.
- Если у вас есть два доступных пользовательских разрешения, вы можете создать пакетный файл для изменения разрешения обоих экранов. К сожалению, я не смог найти способ расположить экраны относительно друг друга с помощью этого инструмента:
ChangeScreenResolution.exe /w=1390 /h=720 /f=60 /b=32 /d=1 ChangeScreenResolution.exe /w=1920 /h=1440 /f=30 /b=32 /d=0
- Чтобы измерить пользовательское разрешение экрана, вы можете сначала установить максимальное собственное поддерживаемое разрешение экрана (например, 3040x1440) и измерить квадрат на этом экране с помощью линейки Powertoys (например, 2875x1440 ). Вы также можете использовать написанный мной код для расчета соотношения разрешения, указав разрешение в пикселях. Повторите код , чтобы найти идеальное разрешение, поддерживаемое экраном. Например, мой экран 3040x1440, на мой вкус, на самом деле доступен для просмотра с пользовательским разрешением 1390x720, так как на моем экране есть скошенные углы, которые обрезают изображение.