Я использую внешний дисплей (проектор) в расширенном режиме. После отключения и повторного подключения все окна оказываются на основном дисплее, а расширенный дисплей пуст. Я бы хотел сохранить все окна на внешнем дисплее во время цикла отключения-повторного подключения.
Предыстория: Я провожу презентацию, и вход проектора поступает через коммутатор HDMI, поэтому я могу показывать другой поток на проекторе. Когда я отключаюсь от своего ПК, Windows воспринимает это как отключение дисплея и перестраивает мои окна. Когда я переключаюсь обратно на него, моя презентация исчезает, и мне нужно переместить окна, чтобы вернуться туда, где я был. Звучит как распространенная проблема, но пока я не видел никаких решений, которые бы мне подошли.
Я просмотрел различные связанные вопросы, в основном связанные с перестановкой окон после перехода монитора в спящий режим (другая проблема, та же основная причина), но я не могу заставить решения работать для меня. Ниже приведены все варианты, которые я рассматриваю, в идеале кто-то поделится решением, которое точно работает, но если этого не произойдет, исключение некоторых вариантов из приведенных ниже все равно будет полезным.
1) Отключите автоматическое определение дисплея в Windows.
а)Один из способов сделать это, о котором я читал, — установить UselViewHelper в 0 в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TMM. Это было предложено здесь: https://www.reddit.com/r/Amd/comments/5jlk82/how_to_prevent_windows_from_rearranging_when/ У меня, правда, не получилось. Я попробовал, перезагрузил, ПК ведет себя так же, как и раньше.
б)Я где-то читал, что Windows не определяет автоматически монитор, отключенный от порта VGA, пока кабель все еще подключен. Это звучит неубедительно, так как нет смысла иметь фиктивные VGA-модемы, но я попробую. Я заказал преобразователь VGA в HDMI, так как у меня нет порта VGA.
2) Имитация внешнего дисплея
Если я смогу добавить виртуальный внешний дисплей, я потенциально смогу иметь настройку с расширенным рабочим столом, зеркалируемым на двух внешних дисплеях (проектор и виртуальный дисплей). Тогда отключение и повторное подключение одного из двух зеркальных дисплеев не должно переставлять окна. Первая проблема здесь в том, что я даже не знаю, возможно ли дублировать расширенный рабочий стол.
Вторая проблема — добавление виртуального дисплея, для чего мне пришлось перебрать множество вариантов:
а)HDMI на VGA, затем разветвитель VGA, затем заглушка VGA. Это должно быть относительно надежно, поскольку позволяет избежать первой проблемы — Windows не придется дублировать второй и третий дисплеи.
б)USB-VGA, возможно, с заглушкой на случай, если Windows не сможет определить, что к порту VGA подключен дисплей (я заказал адаптер, так что смогу это проверить)
в)Использование мобильного приложения для расширения дисплея на телефон, например, этого: https://play.google.com/store/apps/details?id=com.devguru.eltwomonusb&hl=es Таким образом, в данном случае это будет не фантомный дисплей, а реальное устройство, но разрешения, вероятно, не будут совпадать, и из-за нетрадиционного подхода, вероятно, возникнут другие проблемы.
г)Использование программного обеспечения для отправки дисплея на другой ПК или какое-либо другое устройство. Предположительно это можно сделать с помощью Windows Connect, iDisplay, Airscreen, Splashtop Extended Desktop или, может быть, какого-либо другого инструмента. Это также приведет к появлению реального дополнительного дисплея, а не виртуального — он просто не будет подключен кабелем.
3) Повозитесь с настройками нижеHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
Как предлагается здесь, среди прочего: Как остановить изменение положения окон после выхода из спящего режима?
У меня не было записи SIMULATED, как описано в сети, но у меня был MSNILNOEDID..., который может выполнять похожую функцию. У меня есть одна запись для экрана моего ноутбука (HHT00301...) и около дюжины для проектора (BOE06F90...). Они все, похоже, настроены так, как и должны быть в других ответах: 3840x2160 для экрана ноутбука, 1920x1080 для записей проектора и (предположительно) симулированная.
4) Используйте HDMI-переключатель, который обманет ПК, заставив его думать, что дисплей все еще подключен.
Я не знаю, существует ли такое устройство, и если существует, то не знаю, как его найти.
5) Используйте специальное программное решение для имитации внешнего дисплея, когда проектор отключен.
Я нашел одно из таких решений здесь:https://archive.codeplex.com/?p=persistentwindows Проект прекращен, но мне удалось загрузить код. К счастью, это приложение .NET, а я разработчик .NET, но, похоже, это требует много работы — оно даже не собирается из коробки, кажется сложным, и у меня нет никаких подтверждений того, что оно действительно будет работать.
решение1
Попробуйте последнее усовершенствованиеPersistentWindows
Отказ от ответственности: Я являюсь автором усовершенствований
решение2
Ответом будет вариант1. б) Используйте выход VGA
При подключении адаптера HDMI-VGA Windows распознает его как внешний монитор и с радостью расширяет на него рабочий стол. Затем вы можете подключать-отключать внешний монитор сколько душе угодно, а открытые окна останутся там, где они есть (или, в моем случае, вы можете отключиться от этого видеопотока с помощью переключателя HDMI и вернуться к нему).
Поэтому вместо прямого подключения к HDMI-переключателю с моего HDMI-выхода я использую адаптер HDMI-VGA, подключенный к кабелю VGA-HDMI; звучит совершенно нелепо и нетехнологично, но это работает и, похоже, так и останется, пока Microsoft не добавит надежный способ отключения функции автоматического определения дисплея.