2009-10-10 08:41:54 +0000 2009-10-10 08:41:54 +0000
278
278

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

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

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

Ответы (21)

442
442
442
2009-10-10 08:53:20 +0000

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

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

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

202
202
202
2009-10-15 14:57:50 +0000

Для Windows 7 и более поздних версий пользователи:

+Shift+← или → переместят выбранное окно на монитор в этом направлении.

17
17
17
2015-11-24 21:09:19 +0000

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

Информация из How To Geek

13
13
13
2009-10-10 08:50:28 +0000

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

9
9
9
2009-10-10 08:52:48 +0000

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

9
9
9
2009-10-10 09:20:36 +0000

Другим быстрым способом является щелчок r на панели задач и выбор Cascade Windows.

6
6
6
2015-01-09 00:23:52 +0000

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

5
5
5
2009-10-10 08:57:46 +0000

Правка: Прекращено в соответствии с комментариями

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

3
3
3
2011-04-22 18:57:29 +0000

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

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

3
3
3
2009-10-10 13:37:33 +0000

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

1
1
1
2013-02-14 21:37:39 +0000

Вы можете использовать NIRSOFT WinLister. Я заметил, что метод “Move” не доступен в Windows 7, когда вы используете классическую тему, а другие методы не работают, поэтому я выкладываю свою альтернативу “IF all else fails”.

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

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

  3. Щелкните правой кнопкой мыши и выберите “Center Selected Windows” (Центрировать выбранные окна), и все готово!

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

1
1
1
2017-06-20 17:17:22 +0000

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

  • Скопируйте и вставьте приведенный ниже код в сеанс PowerShell ISE.
  • Hit Run
  • Нажмите 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/

1
1
1
2014-02-18 18:27:26 +0000

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

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

1
1
1
2016-10-21 22:25:05 +0000

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

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

1
1
1
2010-05-28 16:27:46 +0000

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

Томас.

0
0
0
2017-06-28 01:10:28 +0000

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

0
0
0
2013-11-16 19:12:31 +0000

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

0
0
0
2018-04-02 22:01:57 +0000

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

0
0
0
2019-02-24 14:24:24 +0000

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

  • Нажмите WinKey + P
  • Выберите Extend или другой вариант, и все окна будут каскадированы. Переместите нужное окно на основной экран.
0
0
0
2017-06-28 01:14:15 +0000

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

: Я написал AHK скрипт.

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

Win + Alt + Стрелка: Переместите активное окно на монитор, направление которого указано стрелкой. Обратите внимание, что это может привести к тому, что ваше окно будет перемещаться за пределы экрана, если вы попытаетесь подняться с монитора 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
-1
-1
-1
2014-08-27 16:50:56 +0000

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

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

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

Окно переместилось…

Похожие вопросы

3
19
10
28
10