Как восстановить окна обратно на исходный экран при повторном подключении внешнего монитора?

17

Представь, что ты делаешь это ...

  1. Подключите ваш внешний монитор.
  2. Запустите несколько приложений, некоторые на каждом мониторе.
  3. Отключите внешний монитор.
    • Все хорошо, потому что все приложения перемещают основной монитор.
  4. Повторно подключите внешний монитор.
    • Приложения остаются на основном мониторе, но было бы очень хорошо, если бы они вернулись к внешнему монитору, на котором они были раньше.

Использование Windows 10. Существуют ли какие-либо решения или обходные пути для автоматического переноса приложений на внешний монитор?

joelsand
источник
6
Вы можете посмотреть здесь - - superuser.com/q/240362/302907
Anaksunaman

Ответы:

1

В прошлом я использовал для этого инструмент Autohotkey, называемый Windowpad. По-видимому, теперь это было заменено новой улучшенной версией под названием WindowPadX . Прокрутите вниз, чтобы увидеть файл readme. Полная документация здесь .

Это было важно для меня на нескольких мониторах. Мне нравилось легко переключаться между окнами.

Вы можете установить горячие клавиши для следующего (из файла readme):

Возможные действия для горячих клавиш

Окно действий

Multi-Monitor

WPXA_MoveWindowToMonitor: перемещать окно между экранами, сохраняя относительное положение и размер.

WPXA_MinimizeWindowsOnMonitor: свернуть все окна на данном экране

WPXA_GatherWindowsOnMonitor: «Собирать» окна на определенном экране.

WPXA_FillVirtualScreen: разверните окно, чтобы заполнить виртуальный экран (все мониторы).

Общая

WPXA_MaximizeToggle: развернуть или восстановить окно.

WPXA_TopToggle: переключает «AlwaysOnTop» для данного окна

WPXA_RollToggle: переключает «Roll / Unroll» для данного окна. WPXA_Move: перемещает и изменяет размер окна, основываясь на концепции «pad».

WPXA_TileLast2Windows: плитка активна и последнее окно

Действия мыши с несколькими мониторами

WPXA_MoveMouseToMonitor: перемещает мышь в центр заданного монитора

WPXA_ClipCursorToCurrentMonitorToggle: переключает обрезку мыши на текущий монитор

WPXA_ClipCursorToMonitor: обрезает (ограничивает) мышь для данного монитора

Общие действия мыши

WPXA_MouseLocator: легко найти мышь

Вы можете найти его и другие инструменты среди «Кураторского списка удивительных библиотек AutoHotkey, дистрибутивов библиотек, скриптов, инструментов и ресурсов» здесь

ludinom
источник
этот список функций предполагает, что он может перемещать окна, но может ли он восстановить свое положение до определенного состояния? что означают «собирать» и «катиться / разворачиваться на основе концепции пэда»?
TT--
@ TT-- "Gather" собирает все окна на текущем дисплее. Это замечательно, когда, например, я хочу, чтобы все окна, кроме одного или, может быть, нескольких окон на одном дисплее, и окна, на которых я фокусируюсь, на моем главном мониторе. «WPXA_MaximizeToggle: развернуть или восстановить окно» должно чередоваться между развернутым и исходным. «Roll / Unroll ...» скрывает рабочую область окна и оставляет только отображаемую строку заголовка или переходит из свернутого состояния в режим восстановления полного окна. Отчасти это из памяти, и я могу быть не совсем прав, но если нет, то это довольно близко.
Людом
1
спасибо за дальнейшие подробности. Звучит так, как будто MaximizeToggleбы восстановил окна на разных экранах, как я искал. Я закончил тем, что использовал этот «DockWin», который специально это делает (и больше ничего).
TT--
0

Некоторые графические процессоры поддерживают это, например, панель управления Nvidia, которая позволяет вам применять настройки для этого и многих других функций.

Или вы можете просто установить несколько параметров отображения для отражения рабочего стола (вместо расширения) на всех мониторах, если это работает для вас.

CymaTechs
источник
0

Программы Windows, называемые в настоящее время приложениями (lication), могут сохранять положение своего окна в файле или реестре. Если кто-то знает, где находятся эти данные, их можно редактировать вручную в блокноте или редакторе реестра. (неправильные записи реестра могут вызвать нестабильность или ошибки Windows)

Создание автоматизированного способа должно быть простым для тех, кто имеет немного навыков кодирования, и его можно запускать по мере необходимости (т. Е. После повторного подключения монитора). Это может быть сделано с помощью сценария действия, файла .bat или собственного приложения.

Заявки должны быть закрыты до этого, хотя для того, чтобы желаемые позиции были реализованы.

Другая возможность с возможностью «онлайн» (перезапуск приложения не требуется) была бы, если бы Windows позволяла получать доступ к окну одного процесса другим. Подходом могут быть функции SendMessage и WindowProc.

(Я не уверен в этом моменте, если это относится только к потокам родительского приложения или может быть сделано также потоками других приложений ... и, конечно, требует хороших знаний в программировании для Windows)

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

Отправляет указанное сообщение в окно или окна. [...] Если указанное окно было создано вызывающим потоком, оконная процедура вызывается немедленно как подпрограмма. Если указанное окно было создано другим потоком, система переключается на этот поток и вызывает соответствующую оконную процедуру.

Сообщение WM_Move https://docs.microsoft.com/en-us/windows/desktop/winmsg/wm-move

Отправляется после перемещения окна.

Окно получает это сообщение через функцию WindowProc.

https://msdn.microsoft.com/en-us/library/ms633573%28v=VS.85%29.aspx?f=255&MSPPError=-2147217396

Определяемая приложением функция, обрабатывающая сообщения, отправленные в окно. [...]

DigitalBlade969
источник
0

Я использую UltraMon (я считаю, что это с открытым исходным кодом) и при определенных обстоятельствах он может сделать это, если настроен правильно.

Сначала установите программу UltraMon . Затем, когда он работает, скажем прямо сейчас, у вас есть только один подключенный монитор (не имеет значения число), создайте профиль:

  • Щелкните правой кнопкой мыши значок в системном окне.
  • Левый клик Показать профили
  • Щелкните левой кнопкой мыши новый профиль отображения, назовите его (например, я назначу ему число, отражающее количество используемых вами мониторов, например, профиль 1).
  • Теперь у вас есть один. Круто, вы можете создавать обои для каждого монитора, заставки и т. Д. Получите все ваши значки так, как вы хотите.
  • Щелкните правой кнопкой мыши значок systray.
  • Щелкните левой кнопкой мыши значки на рабочем столе.

Теперь подключите / отключите другие дисплеи. Создайте профиль для этой новой настройки. Возможно, назовите его «Профиль 7», чтобы подключить 7 мониторов. Теперь сохраните позиции значков, когда они будут такими, как вы хотите.

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

Наконец, в расширенных опциях вы можете указать UltraMon делать это постоянно, автоматически для вас, но для этого может потребоваться платная версия (единовременная плата).

Я купил UltraMon в 2009 году за 19,99 долларов, и это стоило того.

PyTis
источник
3
Можете ли вы рассказать о том, «как», обстоятельствах, в которых он работает, и о том, как правильно его настроить?
fixer1234
Да, сэр / мам. Сначала установите программу UltraMon. www.ultramon.com Затем, когда он работает, скажем прямо сейчас, у вас есть только 1 подключенный монитор (неважно, номер), создайте профиль: Щелкните правой кнопкой мыши значок в системном окне. Щелкните левой кнопкой мыши. Назовите его (это то, что я делаю) по тому, сколько мониторов вы используете, например Профиль 1. Теперь у вас есть один. Круто, вы можете создавать обои для каждого монитора, экранные заставки и т. Д. Получите все ваши значки так, как вы хотите. Щелкните правой кнопкой мыши значок systray. Левый щелчок на
значках
Продолжая, теперь подключите / отключите другие дисплеи. Создайте профиль для этой новой настройки. Возможно, назовите его «Профиль 7», чтобы подключить 7 мониторов. Теперь сохраните позиции значков, когда они будут такими, как вы хотите. Вы можете легко использовать этот инструмент для переключения между профилями. Вы можете легко разместить ярлыки на рабочем столе для быстрого переключения между профилями. Наконец, в расширенных опциях вы можете указать UltraMon делать это все время автоматически для вас, но это может быть платным (одноразовый сбор). Я купил UltraMon в 2009 году за 19,99, и оно того стоило.
PyTis
Похоже, это не отвечает на вопрос - вопрос касался восстановления окон приложений на каждом мониторе, это касается значков на рабочем столе (и связанных с ними вещей). Это звучит как полезный инструмент, но не актуальный.
Бобсон
0

Win Redock работал лучше всего для меня. Redock является автоматическим - сохраняет и восстанавливает окна без какого-либо вмешательства. Магия! Его открытый источник тоже!

BT
источник
-1

Если вы нажмете Shift + правую кнопку мыши на значке на панели задач, а затем нажмите кнопку перемещения, вы можете использовать клавиши со стрелками для перемещения окна и клавишу ввода для установки положения. У меня была такая же проблема несколько лет назад.

Другое решение заключается в использовании DisplayFusion для привязки окна к ближайшему монитору (подключен только один) с помощью горячей клавиши «Переместить все окна на текущий монитор».

hydraxx
источник
1
почему так сложно? Если вы просто хотите перейти на другой монитор, просто используйте windows + shift + left / right
phuclv
-1

Для этого не существует никаких решений, вы должны использовать клавишу Windows на клавиатуре со стрелками влево и вправо, чтобы перемещаться между экранами, или клавишу Windows + Shift + Влево / Вправо, чтобы перейти к частям экрана.

Клавиша Windows + P также помогает в ситуациях с несколькими мониторами, помогая с зеркалированием / расширением и т. Д.

Но опять же, как только вы отключите экран, если в этих окнах есть какие-либо метаданные, они исчезнут после

пиксель
источник
На самом деле, есть несколько решений. Один или два, которые вы упомянули. Изменение разрешения является еще одним.
Хенн
-2

Вы можете сделать это, если вы старый «клавишник», как я; -] Я понял это давным-давно, так как я был multi-mon с начала 90-х, это была очень давняя проблема, среди немного разные интерфейсы.

Самый простой способ, который я нашел для приложений вне экрана / границ, это:

  • Просто выберите приложение через панель задач или Alt-Tab
  • Удерживая клавишу Alt, нажмите пробел ( Alt- Spacebar)
  • На главном экране (ах) вы увидите меню, одним из вариантов которого будет «Переместить», с подчеркнутой буквой «М».
  • Таким образом, нажмите клавишу «М», пока меню все еще находится на сцене.
  • На этом этапе не указывайте / не нажимайте / и т. Д., Поскольку вы сейчас «перемещаете» активное окно (закадровое).
  • Вы можете перетаскивать мышь ( НИКАКИХ КНОПКИ НА СЕЙЧАС ), и вы должны увидеть, как приложение входит / выходит из главных экранов, достаточно для того, чтобы разместить его где-то более удобным для использования.
  • Кроме того, вы можете использовать клавиши со стрелками для перемещения приложения, работает так же хорошо, но немного медленнее, чтобы выяснить, где окна и в каком направлении они движутся.
  • Когда у вас есть окно в «хорошем месте», где вы можете активно изменить его размер или переместить, либо нажмите кнопку основной мыши, либо, если вы используете метод клавиатуры, нажмите клавишу «Ввод».
  • Окно / приложение теперь должно легко перемещаться / настраиваться.
  • Повторите для всех окон / приложений, которые находятся за пределами экрана.
PeteG
источник
3
(1) Ваш ответ, по-видимому, предполагает, что ОП не знает, как перемещать окна, что является оскорбительным и наивным. Суть вопроса состоит в том, чтобы заставить компьютер запомнить, какое окно было на каком мониторе, и заставить компьютер автоматически восстанавливать их без необходимости запоминать, где они были, а затем перемещать их назад вручную, по одному за раз. (2) Помимо сочетания клавиш Alt + Space, ваш ответ по сути такой же, как и в первом абзаце ответа Hydraxx . … (Продолжение)
Скотт
(Продолжение)… (3) Почему вы считаете, что «самый простой» способ сделать это - использовать клавиатуру для перехода в «режим движения», а затем использовать мышь для перемещения? Как говорит Hydraxx, вы можете сделать это полностью с клавиатуры. Или вы можете сделать это полностью с помощью мыши, нажав на заголовок окна и перетащив. Вы представили самое сложное решение.
Скотт
Это на самом деле довольно просто, описание немного сложнее. Я не получаю пункт меню «Переместить», когда пытаюсь использовать панель задач: она устарела или что-то в моей системе мешает ее просматривать. Я согласен, кроме alt-spc, мой ответ по сути тот же, но я показал свой метод десяткам, и он всегда был в духе «вау, это было легко, удивляюсь, почему не попробовал это» , Мой ответ действительно позволяет использовать решение только для ключей, как уже отмечалось. Для этого тоже есть утилиты, но иногда расширения оболочки могут иметь нежелательные эффекты ...
PeteG
Я согласен, хотя, мы более или менее добираемся до того же места, используя ту же конструкцию в ОС.
PeteG
Вы также можете использовать DisplayFusion, чтобы сделать это. У него есть настройка для «привязки» текущей задачи / окна к текущему (вероятно, главному) монитору.
PeteG