Вопрос или проблема
Пытаюсь решить проблему с моим KVM-переключателем StarTech на 2 порта DisplayPort – USB 2.0 – 4K 30Hz, и, вероятно, именно 30Hz является моим проблемой.
К сожалению, я немного напутал и пытаюсь использовать два монитора…
- Отрегулируйте окна, чтобы изменить свойства адаптера дисплея на 30Hz.
- Перейдите к KVM, чтобы посмотреть, когда наконец всё заработает.
Монитор 1 становится практически черным, в то время как Монитор 2 работает. Вероятно, это можно сделать, если я всё запомнил, но это довольно сложно.
Даже не делаю это правильно перед включением Монитора 2:
start-sleep 5; displayswitch.exe /external
Или /internal, это исправляет ситуацию.
Итак, есть ли способ изменить свойства адаптера дисплея для Монитора 2, не включая Монитор 2? Без установки каких-либо сторонних программ?
То есть через Диспетчер устройств или PowerShell?
Ответ или решение
Изменение режимов отображения для неактивного монитора и комбинации адаптера отображения может быть сложной задачей, особенно когда у вас есть конфигурация с KVM-переключателем. Рад помочь вам в решении вашей проблемы.
К сожалению, большинство систем Windows требуют, чтобы монитор был активным, чтобы производить изменения в его настройках дисплея через стандартные инструменты, такие как Панель управления или Диспетчер устройств. Тем не менее, есть несколько методов, которые можно попробовать для изменения параметров адаптера отображения без установки сторонних программ и без необходимости, чтобы второй монитор был включен:
-
Использование PowerShell:
PowerShell имеет ограниченные возможности в контексте мониторинга и управления дисплеем. Однако вы можете попробовать выполнить команды, чтобы создать виртуальный монитор. Это может помочь вам управлять свойствами, не включая сам монитор. Выполните следующую команду в PowerShell:Add-Type -TypeDefinition @' using System; using System.Runtime.InteropServices; public class Display { [DllImport("user32.dll")] public static extern int EnumDisplayDevices(string lpDevice, uint iDevNum, ref DisplayDevice lpDisplayDevice, uint dwFlags); [DllImport("user32.dll")] public static extern int ChangeDisplaySettings(ref DEVMODE lpDevMode, uint dwFlags); [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct DisplayDevice { public int cb; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string DeviceName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceString; public int StateFlags; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceId; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public string DeviceKey; } [StructLayout(LayoutKind.Sequential)] public struct DEVMODE { public const int CCHDEVICENAME = 32; public const int CCHFORMNAME = 32; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCHDEVICENAME)] public string dmDeviceName; public short dmSpecVersion; public short dmDriverVersion; public short dmSize; public short dmDriverExtra; public int dmFields; public int dmPositionX; public int dmPositionY; public int dmDisplayOrientation; public int dmDisplayFixedOutput; public short dmColor; public short dmDuplex; public short dmYResolution; public short dmTTOption; public short dmCollate; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCHFORMNAME)] public string dmFormName; public short dmLogPixels; public int dmBitsPerPel; public int dmPelsWidth; public int dmPelsHeight; public int dmDisplayFlags; public int dmDisplayFrequency; public int dmICMMethod; public int dmICMIntent; public int dmMediaType; public int dmDitherType; public int dmReserved1; public int dmReserved2; public int dmPansWidth; public int dmPansHeight; } } '@ $device = New-Object Display+DisplayDevice $device.cb = [System.Runtime.InteropServices.Marshal]::SizeOf($device) [Display]::EnumDisplayDevices($null, 0, [ref]$device, 0) $dm = New-Object Display+DEVMODE $dm.dmSize = [System.Runtime.InteropServices.Marshal]::SizeOf($dm) # Измените параметры дисплея здесь $dm.dmPelsWidth = 1920 # Ширина монитора $dm.dmPelsHeight = 1080 # Высота монитора $dm.dmDisplayFrequency = 30 # Частота обновления [Display]::ChangeDisplaySettings([ref]$dm, 0)
-
Использование диспетчера устройств:
В некоторых случаях отключение и повторное включение устройства в Диспетчере устройств может помочь изменить настройки дисплея. Перейдите в Диспетчер устройств, найдите ваш адаптер графики, нажмите правой кнопкой мыши и выберите "Отключить устройство", затем снова "Включить устройство". Это может заставить систему пересоздать настройки для всех подключенных мониторов. -
Настройка конфигурации KVM:
Если возможно, проверьте настройки вашего KVM-переключателя. Некоторые KVM-переключатели имеют встроенные функции для эмуляции подключенных мониторов, даже если они выключены. Это может быть полезно, так как позволит вашему ПК воспринимать монитор как подключённый, что может помочь вам изменить разрешение и частоту обновления. -
Убедитесь, что драйвера обновлены:
Убедитесь, что у вас установлены последние версии драйверов для графического адаптера. Иногда проблемы с частотой обновления могут быть вызваны устаревшими драйверами.
Если все вышеперечисленное не сработает, вам, вероятно, придется изменить подход к настройке отображения, используя графические интерфейсы, когда оба монитора подключены и включены. Убедитесь, что вы работаете с настройками в безопасном режиме или в режиме низкого разрешения, если это возможно, чтобы улучшить управляемость ситуации.
Удачи в решении вашей проблемы!