Как переместить окна, которые открываются вне экрана?


272

У меня есть настройка с двумя мониторами, и я недавно поиграл с настройками позиционирования, и некоторые из моих приложений с одним окном предпочитают сохранять то, где они были в последний раз закрыты, и открывать в том же положении позже. К сожалению, это теперь помещает их вне видимой области моих экранов!

Есть ли какой-нибудь способ заставить конкретное окно попасть в видимую область?


2
Это все еще проблема в Windows 10! У меня есть 3 монитора, и я использую только один «здесь и там» ... когда я это делаю, то прекращаю его использовать, некоторые открытые программы по умолчанию открываются на нем. Я должен сделать победу + стрелка влево, чтобы в конечном итоге вернуть его на главный монитор.

1
Все еще проблема семь лет спустя ...
Джек

Возможный дубликат superuser.com/questions/1206086/…
SDsolar

Ответы:


194

Для пользователей Windows 7 и более поздних версий: Windows Key+ Shift+ или переместит выбранное окно на монитор в этом направлении.


2
Спасибо за это, у меня было приложение с нестандартным окном, поэтому метод Alt-Space не работал (Foxit Reader на Windows).
Bdoserror

3
Также следует отметить выигрыш + влево / вправо / вверх, который размещает окно, покрывающее половину активного монитора (с обеих сторон), или максимизирует его. Это должно работать при любых условиях, которые я нашел, и это очень полезные клавиши (кроме случаев, когда я продолжаю нажимать их, когда пытаюсь нажать клавиши Fn +: P).
Kat

11
Это ничего не делает в моей Windows 10 Pro x64
Майк 'Pomax' Kamermans

3
@ Mike'Pomax'Kamermans: смешно. Это единственное , что работает на моем ноутбуке с Windows 10 Pro x64 для перемещения окна Emacs, которое открывается вне экрана.
Майк Шеррилл 'Cat Recall'

2
Вау, не могу поверить, я никогда не знал об этом. Кто-то все еще находит это полезным 8 лет спустя :)
veryRandomMe

433

Я использую этот подход:

  • Используйте Alt+, Tabчтобы переключиться на внеэкранное приложение.
  • Нажмите Alt+, SPACEчтобы вызвать системное меню (вы не увидите его, потому что оно за кадром)
  • Нажмите, Rчтобы выбрать пункт меню «Восстановить», чтобы убедиться, что окна не развернуты (вы не можете переместить их, если они развернуты)
  • Нажмите Alt+ еще SPACEраз, Mчтобы выбрать пункт меню «Переместить».
  • Нажмите одну из клавиш со стрелками, чтобы начать движение.
  • Теперь просто используйте мышь, чтобы разместить окно, где вы хотите.

Если вы используете неанглийскую версию Windows, варианты меню «R» и «M», вероятно, будут другими.


8
Большое спасибо "Terje Mikal" за ваше решение, которое спасло меня. Но, учитывая, что проблема возникает только после того, как Windows 7 удалила старое доброе решение (щелкните правой кнопкой мыши кнопку «App» на панели задач), существует еще лучшее решение, опубликованное «kmote» 18 июня 2013 г. 17:45 в разделе «Emthigious» 10 октября 2010 08:50: «Под Windows 7 вам нужно СДЕЛАТЬ правой кнопкой мыши на кнопке панели задач»
Мишель Мерлин

1
Пробовал каждый второй шаг, но начало движения с помощью клавиш со стрелками - вот что, наконец, на самом деле сделало ... вау. И я был так близок к переустановке приложения!
Филипп

1
С приложением, с которым я имею дело, Restore недоступен, но Maximize работает на этом этапе, и тогда перемещение не требуется. Максимизируй для победы!
Брайан Булковски

Я делаю то же, что и выше, но следующая комбинация также работает для меня: Alt + Tab, Alt + Space, M, затем нажимаю Esc, это также работает
Mz A

Это почти 2020 год, до сих пор с этим сталкиваются.
Мерт

14

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

введите описание изображения здесь

Информация от Как Выродка


3
В текущих сборках Windows 10 вы также можете навести курсор мыши на панель задач и удерживать ее в течение секунды, что приведет к появлению миниатюрного окна. При щелчке правой кнопкой мыши на миниатюре появляется «старое» контекстное меню, аналогичное нажатой клавише Shift.
Coderer

1
@ Кодер: Комментарий действительно полезен, я этого не знал. Я думал, что они удалили это полностью.
Oak_3260548

Я полностью забыл об этом! Я думаю, что вы также можете щелкнуть правой кнопкой мыши, если кнопка на панели задач представляет одно окно. Вы получите другое контекстное меню, если для рассматриваемого приложения имеется более одного окна.
Coderer

12

Вы можете щелкнуть правой кнопкой мыши кнопку программы на панели задач, а затем нажать «Переместить». Теперь вы можете использовать кнопки со стрелками на клавиатуре, чтобы переместить окно, где вы можете его видеть. Требуется немного повозиться, иногда окна "застревают" по краям мониторов. Вы также можете попробовать использовать мышь, но клавиатура немного более надежна, если вы еще не видите окно ;-)


2
Не знал о клавиатуре, но вы не можете использовать мышь, если они за кадром, я уже пробовал.
Мэтью Шарли

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

9
Кроме того, после нажатия хотя бы одной клавиши со стрелкой окно «присоединяется» к мыши, и вы можете перемещать его с помощью мыши (не щелкая мышью!). Такой подход «одна клавиша плюс мышь» обычно быстрее, чем использование только клавиш.
Даниэль Риковски,

8
Под Windows 7 вам нужно сдвигать правой кнопкой мыши на кнопке панели задач.
kmote

Это единственное решение, которое сработало для меня ...
sebagomez

8

Еще до того, как появилась панель задач, я исправлял эту проблему, Alt+Spaceчтобы вызвать меню окна, затем Mдля функции Move. Клавиши со стрелками позволят вам переместить окно обратно на экран.


+1 с оговоркой, что они не будут перемещаться, если они развернуты на экран, это может быть проблемой, если окна не просто «выходят за пределы», а находятся на фиктивном экране. Они могут быть для OP, так как максимизация должна охватывать все разрешение занятого экрана.
mckenzm

8

Другой быстрый способ - щелкнуть правой кнопкой мыши на панели задач и выбрать Каскад Windows.


4
Это довольно уродливый способ сделать это, потому что это повлияет на все мои открытые окна (и у меня обычно есть хотя бы один открытый браузер, если не полдюжины других)
Мэтью Шарли

1
Правда, это быстрее всего. Также вы можете закрыть окно, которое было вне экрана, и использовать каскад отмены после того, как это восстановит положение окон. Я не знаю, восстановит ли это также положение окна, которое было за кадром, в эту позицию, так как я не могу попробовать это (только один монитор).
Т. Калтнекар,

5

Я столкнулся с этой проблемой, и у меня абсолютно ничего не получалось. Поэтому я вошел в диспетчер задач и щелкнул правой кнопкой мыши программу, которая была за кадром. Переключиться на не работал, и не принести на фронт. Отметим, что это было статическое окно, поэтому максимизировать было невозможно через панель задач. Но вы можете максимизировать с помощью диспетчера задач, и это приносит его на ваш главный экран! Оттуда вы можете делать с окном все, что вам нужно. :)


Спасибо за этот ответ. Щелчок правой кнопкой мыши и максимизировать в диспетчере задач был единственным, что сработало для меня.
кодер

5

Изменить: прекращено согласно комментариям

Чтобы быстро решить эту проблему в будущем и расположить приложения на двухэкранном экране, я могу порекомендовать Winsplit Revolution . Это сводит решение этой проблемы к простому нажатию клавиш Ctrl-Alt и клавиши цифровой клавиатуры, чтобы вернуть окно точно туда, где вы хотите.


к сожалению, это больше не бесплатно
Charbel

Да, это выглядит хорошо, но у меня строгая политика не платить, если я не хочу этого делать. Как для Lastpass или Acronis True Image. И с моим графиком вполне возможно, что пройдет более 30 дней, прежде чем проблема снова возникнет, поэтому пробные периоды не будут работать для меня.
SDsolar

1
WinSplit Revolution, к сожалению, больше не выпускается, и новых обновлений не будет. "Заменено на MaxTo", в настоящее время USD $ 19
TT--

1
WinSplit-Revolution является бесплатным и по - прежнему доступен для скачивания , если вы искать для него. Последняя версия была 11.04, выпущена в 2011 году. Она работает в Windows 10. Модифицированный источник v9.02 доступен в GitHub как WinSplit-Reloaded . Это потрясающий продукт.
Бен

@Ben, спасибо за ссылки. Я пошел по ссылке в ответе и процитировал эту информацию из нее. (Теперь страница гласит: «WinSplit Revolution больше не доступен, но мы предлагаем отличную альтернативу».) В этом файле readme, содержащемся в ветке GitHub, упоминается «версия 9.02, опубликованная в 2009 году».
TT--

3

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


Ссылка сейчас мертва :-(
Данио

:-( с другой стороны, это решение, возможно, изжило себя. Это все еще случается? Прошло много лет с тех пор, как я в последний раз нуждался в этом.
Торбен Гундтофте-Брюн,


Инсталлятор просто зависает для меня (на Windows 7).
mhenry1384

@ mhenry1384 хорошо это будет 14 лет (и 32 бит), мы не можем реально ожидать , что она работает с новыми версиями ..... (64 бит?)
Торбена Gundtofte-Брюн

3

Я только что столкнулся с этой проблемой с графическим интерфейсом Git в Windows 7, который основан на Tk и, как таковой, имеет тенденцию странным образом сбиваться с работы в Windows. Я попытался нажать Alt-Space и использовать команду перемещения, чтобы вернуть его обратно в поле зрения, но оно казалось застрявшим. Увеличение до максимума вернет его, но если я верну его в оконный режим, оно снова исчезнет.

То, что я сделал, это максимизировал его, взял строку заголовка и перетащил ее в сторону экрана, чтобы Aero Snap уменьшил его до половины размера экрана и перевел в оконный режим. После этого я оттащил его от экрана и восстановил контроль над ним.


Так много ответов получили более высокую оценку, но ни один из них не работал для меня. Это сделал.
Дан Ниссенбаум

Git GUI тоже привел меня сюда, но я решил это с помощью комбинации Shift-RightClick (на значке панели задач), Move, клавиши со стрелкой, а затем мыши (чтобы поместить окно в нужное место). Решение Emthigious / Brad Patton работает.
mcalex

1

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

Томас


1

Вы можете использовать NIRSOFT WinLister. Я заметил, что метод «Переместить» недоступен в Windows 7, когда вы используете классическую тему, и различные другие методы потерпели неудачу, поэтому я публикую свою альтернативу «ЕСЛИ все остальное терпит неудачу».

  1. Загрузите приложение WinLister здесь .

  2. Запустите WinLister от имени администратора и выберите окно, которое вы хотите вернуть на экран. Отказ от прав администратора не даст приложению возможность перемещать окна за вас.

  3. Щелкните правой кнопкой мыши и выберите «Центр выбранных окон», и все готово!

Скриншоты здесь .


1
Отличный совет - это единственное решение, которое сработало для меня для электроинструментов MS TFS, поскольку Alt-Space открывал только меню для окна обозревателя-владельца, а не подокно, которое находилось вне экрана.
Данио

1

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

В этом случае, если вы можете открыть дополнительные экземпляры приложения, сделайте это. Первые несколько экземпляров почти наверняка появятся на панели задач как еще более призрачные окна. Продолжай делать это. Со временем они начнут заполнять основной вид. Затем используйте значок панели задач, чтобы щелкнуть правой кнопкой мыши и закрыть внеэкранные экземпляры. Когда не будет открыто ни одного закадрового экземпляра, закройте его на основном экране. В следующий раз, когда вы откроете это приложение, оно появится на основном экране, а не «от камеры».


1
Что вы имеете в виду: «удаленное местоположение», «ваше местоположение» и т. Д.? Почему пользователь «заблокирован от просмотра, которого нет на вашем экране»?
Скотт

Он имеет в виду VM, Citrix, RDP и т. Д. Вы не собираетесь читать multi-4K на вашем телефоне. Это также относится и к фиктивным экранам. Некоторые корпоративные пользователи вставляют ключ HDMI, чтобы скрыть обязательные элементы рабочего стола. Возвращение к 1 реальному экрану перемещает их назад.
Маккензм

1

Выберите окно (например, используя Alt+ Tab). Затем удерживайте Alt+ F7и верните окно с клавишами со стрелками обратно в поле зрения. Готово.

Иногда трудно слепо узнать, где находится скрытое окно (и, следовательно, как его сдвинуть к экрану). Анимации во время выбора окна могут быть полезны. Из-за моих настроек (иногда я использую второй экран поверх экрана моего ноутбука), окна, которые появляются вне экрана, обычно находятся ниже. Удерживание Alt+ F7+ Upпоэтому приводит их в поле зрения.


1

Для тех, кто знаком с PowerShell, попробуйте это:

  • Скопируйте и вставьте приведенный ниже код в сеанс PowerShell ISE.
  • Хит Ран
  • Нажмите ALT + TAB / что угодно, чтобы активировать закадровое окно
  • Подождите несколько секунд (5 секунд от нажатия RUN на сценарии)
  • Теперь должно появиться окно.

Если окно является основным, оно будет перемещено в верхний левый угол экрана.

Если окно является дочерним окном другой программы, его верхний левый угол будет выровнен с верхним левым углом родительского окна.

Add-Type @"
    using System;
    using System.Runtime.InteropServices;

    // https://msdn.microsoft.com/en-us/library/windows/desktop/dd162897(v=vs.85).aspx
    public struct RECT 
    {
        public long left;
        public long top;
        public long right;
        public long bottom;
    }

    public class User32WinApi 
    {

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx
        /*
            Gets the handle of the in-focus window
            NB: In some scenarios this can be NULL; so code needed to handle such an event
        */
        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx
        /*
            top & left are always 0 (i.e. since the rectangle is relative to the window itself)
            bottom & right equal the windows hieght and width, respectively.
        */
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

    }

"@
$repaint = $true 
$windowSize = New-Object RECT

"Quick; get the window you're after in focus; you have 5 seconds..."
Start-Sleep -Seconds 5 #allow 5 seconds for the user to get the window they're after in focus (e.g. using ALT+TAB / whatever)
$activeWindow = [User32WinApi]::GetForegroundWindow()
if ($activeWindow) {
    if([User32WinApi]::GetClientRect($activeWindow, [ref]$windowSize)) {
        if ([User32WinApi]::MoveWindow($activeWindow, 0, 0, $windowSize.right, $windowSize.bottom, $repaint)) {
            "Window moved successfully (hope you agree!)"
        } else {
            Write-Warning "Failed to move the active window"
        }
    } else {
        Write-Warning "Failed to get size of the active window"    
    }
} else {
    Write-Warning "No active window found"    
}

Оригинальный код здесь: https://gist.githubusercontent.com/JohnLBevan/1593bbb860c2d2af436a1c9414e8adfa/


0

наведите курсор на панель задач .. щелкните правой кнопкой мыши, выберите "Показать окно рядом" ..., чтобы вывести окно на экран ... и, наконец, снова установите курсор на панель задач, щелкните правой кнопкой мыши, чтобы отменить показ окна рядом.


0

Вы также можете использовать UltraMon (несвободный, Windows, GUI), чтобы настроить сочетание клавиш для перемещения окна на следующий или предыдущий монитор.

введите описание изображения здесь


0

Из Переместить окно в нижний / верхний монитор с помощью ярлыка в Windows от Tymric :

Я написал сценарий AHK.

Использование:

Win+ Alt+ Arrow: Переместить активное окно на монитор, направление которого указано стрелкой. Обратите внимание, что это может привести к тому, что ваше окно выйдет за пределы экрана, если вы попытаетесь подняться с монитора 2 или прямо с монитора 3 в настройках. Я обновлю это в будущем.

Win+ Alt+ Number: Переместить активное окно на указанный номер монитора

#Persistent

SysGet, MonitorCount, MonitorCount


#!Up::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYneg%
  return
#!Down::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYpos%
  return
#!Left::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXneg%, %yPos%
  return
#!Right::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXpos%, %yPos%
  return

#!1::
  GoSub CalculateDisplacement
  WinMove, A, , %xPosOn1%, %yPosOn1%
  return

#!2::
  if (MonitorCount > 1) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn2%, %yPosOn2%
  }
  return

#!3::
  if (MonitorCount > 2) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn3%, %yPosOn3%
  }
  return

#!4::
  if (MonitorCount > 3) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn4%, %yPosOn4%
  }
  return

#!5::
  if (MonitorCount > 4) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn5%, %yPosOn5%
  }
  return

#!6::
  if (MonitorCount > 5) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn6%, %yPosOn6%
  }
  return

#!7::
  if (MonitorCount > 6) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn7%, %yPosOn7%
  }
  return

#!8::
  if (MonitorCount > 7) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn8%, %yPosOn8%
  }
  return

#!9::
  if (MonitorCount > 8) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn9%, %yPosOn9%
  }
  return


CalculateDisplacement:
  WinGetPos, xPos, yPos, , , A
  Loop, %MonitorCount% {
    SysGet, MonitorDimension, Monitor, %A_Index%
    if (xPos > MonitorDimensionLeft and xPos < MonitorDimensionRight and yPos < MonitorDimensionBottom and yPos > MonitorDimensionTop) {
      currentMonitor = %A_Index%
    }
  }
  SysGet, thisMonitor, Monitor, %currentMonitor%
  displaceXpos := xPos + thisMonitorRight - thisMonitorLeft
  displaceYpos := yPos + thisMonitorTop - thisMonitorBottom
  displaceXneg := xPos - thisMonitorRight + thisMonitorLeft
  displaceYneg := yPos - thisMonitorTop + thisMonitorBottom
  Loop, %MonitorCount% {
    SysGet, nextMonitor, Monitor, %A_Index%
    xPosOn%A_Index% := xPos - thisMonitorLeft + nextMonitorLeft
    yPosOn%A_Index% := yPos - thisMonitorTop + nextMonitorTop
  }
  return

0

Я написал инструмент под названием Borderline, который будет автоматически перемещать закадровые окна обратно на экран при запуске. Вы должны запускать его, когда вам это нужно (лучше всего работает, если вы назначаете ему сочетание клавиш или помещаете его в меню «Пуск»), но это также означает, что он не всегда работает в фоновом режиме.


0

Иногда это решается:

  • Нажмите WinKey+P
  • Выберите Extendили другой вариант, и все окна будут каскадными. Переместите желаемое окно на основной экран.

-1

Как переместить окна, которые открываются вне экрана?

Временно уменьшите разрешение экрана, возьмите верхнюю панель мышью и переместите центр. Подождите, пока система автоматически восстановит разрешение.

  1. DeskTop -> разрешение экрана
  2. Выберите свой монитор, выберите более низкое разрешение из текущих настроек.
  3. Система покажет новое разрешение, спросит, хотите ли вы сохранить или вернуть в течение 30 секунд.
  4. В течение 30 секунд возьмите найденное мисс окно и переместите его в центр.
  5. Подождите, пока время не вернется автоматически.

Окно сдвинулось ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.