Назад | Перейти на главную страницу

Можно ли изменить разрешение экрана с помощью скрипта?

У нас есть рабочая станция с четырьмя мониторами, которая используется несколькими пользователями. В зависимости от пользователя необходимо изменить разрешение экрана всех четырех мониторов. Я ищу способ упростить / автоматизировать процесс изменения разрешений, возможно, с помощью какого-то скрипта? Это можно сделать?

ResSwitch это средство, которое будет делать то, что вы хотите. Это инструмент командной строки, в котором вы отправляете разрешение, глубину цвета и частоту обновления - например,

resswitch.exe 800600 32 60

Вы можете использовать переключатель устройства, чтобы указать, к какому устройству применяется команда, указав имя устройства. Итак, для 4 мониторов вам, вероятно, лучше всего будет создать командный файл с 4 командами в формате.

Чтобы получить имена устройств, вы можете использовать ResCopy, также включенный в этот zip-файл для их отображения.

#This script will change the display resolution of a remote PC
#The user would only need to log off to see changes
#Resolution is changed thru the registry.
#The Registry path may be slightly different based on equipment type

$Computer = Read-Host -Prompt 'ENTER PC NAME TO CHANGE RESOLUTION'
$RES1 = Read-Host -Prompt 'ENTER FIRST RESOLUTION PARAMETER (EX. 1024)'
$RES2 = Read-Host -Prompt 'ENTER SECOND RESOLUTION PARAMETER (EX. 768)' 
 
Invoke-Command -Computername $Computer -Scriptblock{
param($RES1, $RES2)
"RES1: $RES1"
"RES2: $RES2"

$Key="HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\HWP*\00"
Set-ItemProperty -Path $Key -Name PrimSurfSize.cx -Value $RES1 -Force
Set-ItemProperty -Path $Key -Name PrimSurfSize.cy -Value $RES2 -Force

$Key="HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\RTK*\00"
Set-ItemProperty -Path $Key -Name PrimSurfSize.cx -Value $RES1 -Force 
Set-ItemProperty -Path $Key -Name PrimSurfSize.cy -Value $RES2 -Force

$Key="HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\MSH*\00"
Set-ItemProperty -Path $Key -Name PrimSurfSize.cx -Value $RES1 -Force 
Set-ItemProperty -Path $Key -Name PrimSurfSize.cy -Value $RES2 -Force
}-ArgumentList $RES1, $RES2

POWERSHELL -NOEXIT