Есть ли способ изменить разрешение экрана Windows через командную строку?

Я использую программу Microsoft Live Mesh для удаленного доступа к ПК под управлением Windows 7, работающему на 2 экранах: один с разрешением 1920x1080, а другой с разрешением 1920x1200.

Я получаю к ним доступ через старый ноутбук с разрешением 1024x1078. В результате появляются такие крошечные значки / команды, что трудно попробовать изменить разрешение экрана с 2 дисплеев с высоким разрешением на один дисплей с низким разрешением.

Было бы здорово, если бы был способ командной строки сделать это. Или, возможно, есть способ через живую сетку, чтобы сделать это. Есть идеи?

10 ответов

Решение

Используйте QRes, затем скажите:

QRes.exe /x:800 /y:600

Это можно сделать с помощью бесплатного инструмента nircmd.
Чтобы изменить отображение на 1024 x 768 с глубиной цвета 24 бита:

nircmd.exe setdisplay 1024 768 24

У nircmd также есть другие очень многочисленные функции.

Я нашел образец сценария 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

  1. Если вам нужны два нестандартных разрешения на 2 экранах, например — 1920х1440 и 1390х720 и они не отображаются в настройках Windows, — вы не сможете переключиться на эти разрешения. Используйте , чтобы добавить собственные разрешения в таблицу «Подробные разрешения» в приложении CRU для каждого экрана. После добавления пользовательских разрешений вам необходимо запустить инструмент restart.exe/restart64.exe, входящий в состав CRU-1.5.2CRU-1.5.2 , чтобы зафиксировать эти изменения в Windows.
  2. Если у вас есть два доступных пользовательских разрешения, вы можете создать пакетный файл для изменения разрешения обоих экранов. К сожалению, я не смог найти способ расположить экраны относительно друг друга с помощью этого инструмента:
            ChangeScreenResolution.exe /w=1390 /h=720 /f=60 /b=32 /d=1
    ChangeScreenResolution.exe /w=1920 /h=1440 /f=30 /b=32 /d=0
    
  3. Чтобы измерить пользовательское разрешение экрана, вы можете сначала установить максимальное собственное поддерживаемое разрешение экрана (например, 3040x1440) и измерить квадрат на этом экране с помощью линейки Powertoys (например, 2875x1440 ). Вы также можете использовать написанный мной код для расчета соотношения разрешения, указав разрешение в пикселях. Повторите код , чтобы найти идеальное разрешение, поддерживаемое экраном. Например, мой экран 3040x1440, на мой вкус, на самом деле доступен для просмотра с пользовательским разрешением 1390x720, так как на моем экране есть скошенные углы, которые обрезают изображение.
Другие вопросы по тегам