113

В Windows 7 я знаю, что вы можете сделать Windows + Left, чтобы поместить окно в левую половину экрана. Есть ли функция, которая будет делать сверху и снизу?

17 ответов17

70

Нет. Доступны только следующие варианты привязки:

  • левая половина оснастки (Windows + слева)
  • правая половина оснастки (Windows + справа)
  • полная высота экрана (Windows + Shift + Up)
  • максимальная привязка (Windows + вверх)
  • «открепить» (Windows + вниз)
  • привязка к следующему монитору / дисплею (Windows + Shift + (влево или вправо))

Редактировать: другие удивительные комбинации, которые могут вам понравиться:

  • свернуть все (Windows + M)
  • свернуть все, кроме активного окна (Windows + Home)
  • Aero peek (просмотр рабочего стола, все окна становятся прозрачными) (Windows + пробел)
52

Я использую следующие шаги для достижения этой цели:

  1. Windows + D (чтобы свернуть все окна)
  2. затем с помощью мыши разместите окна, которые я хочу разместить, в общем расположении на каждом мониторе (не меняйте их размер)
  3. затем щелкните правой кнопкой мыши на панели задач и выберите "Показать окна в стеке" из контекстного меню, затем восстановите все другие окна, которые я хочу

Примечание: вы должны свернуть все окна, которые вы не хотите сложить. Это то, для чего предназначен шаг 1.

23

Я написал небольшой скрипт AutoHotKey для привязки окон сверху и снизу, потому что я тоже был разочарован этим. Вы можете скачать его с моего сайта: http://www.pixelchef.net/how-snap-windows-horizontally-windows-7

; Move window up (Windows + Shift + UP ... NOTE must maximize window first)
+#Up::
  WinGetPos,X,Y,W,H,A,,,
  WinMaximize
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,

  ; if this is greater than 1, we're on the secondary (right) monitor. This
  ;   means the center of the active window is a positive X coordinate
  if ( X + W/2 > 0 ) {
  SysGet, MonitorWorkArea, MonitorWorkArea, 1
  WinMove,A,,X,0 , , (MonitorWorkAreaBottom/2)
  }
  else {
  SysGet, MonitorWorkArea, MonitorWorkArea, 2
  WinMove,A,,X,0 , , (MonitorWorkAreaBottom/2)
  }
return

; Move window down (Windows + Shift + DOWN ... NOTE must maximize window first)
+#Down::
  WinGetPos,X,Y,W,H,A,,,
  WinMaximize
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,

  ; if this is greater than 1, we're on the secondary (right) monitor. This
  ;   means the center of the active window is a positive X coordinate
  if ( X + W/2 > 0 ) {
  SysGet, MonitorWorkArea, MonitorWorkArea, 1
  WinMove,A,,X,MonitorWorkAreaBottom/2 , , (MonitorWorkAreaBottom/2)
  }
  else {
  SysGet, MonitorWorkArea, MonitorWorkArea, 2
  WinMove,A,,X,MonitorWorkAreaBottom/2 , , (MonitorWorkAreaBottom/2)
  }
return
20

WindowSpace обеспечивает эту функциональность. Чтобы сделать то, что вы просите:

  • Перейдите на вкладку "Перемещение и изменение размера" в Settings
  • Для «Верхний край:» выберите "Переместить в верхнюю часть".
  • Для «Нижний край:» выберите "Переместить на нижнюю сторону".

Скриншот:

Скриншот

9

В настоящее время передо мной нет машины с Windows 7, но начиная с Windows 95 (или даже раньше, возможно), появилась возможность размещать окна по горизонтали. Сверните все, кроме двух окон, которые вы хотите просмотреть сверху и снизу, щелкните правой кнопкой мыши панель задач и выберите Tile Windows по горизонтали. Размер каждого окна будет занимать половину вертикальной области экрана. Это бесполезно делать с одним окном, и, как говорится в другом ответе, для него нет сочетания клавиш, но иногда я нахожу его удобным.

Исправление: в Windows 7 это называется "Показать окна в стеке"

7

Лучшая программа, которую я когда-либо использовал, которая выполняет именно это и многое другое, - это WinSplit Revolution: http://winsplit-revolution.com/

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

Демо видео: http://winsplit-revolution.com/screenshots/videos-demos

Это приложение является бесплатным и выпущено под Creative Commons Attribution-Non Commercial-No Derivative Works 3.0.

РЕДАКТИРОВАТЬ:

Похоже, что WinSplit больше не доступен, веб-сайт перешел во владение Digital Creations AS, которая имеет собственную версию этого типа программного обеспечения и больше не является бесплатной.

7

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

Команды привязаны к Windows + Ctrl + Up и Down вместо Shift, чтобы не мешать существующим Windows + Shift + Up.

Это работает аналогично полноэкранной привязке к высоте (Windows + Shift + Up) в том, что окно сохраняет свою горизонтальную позицию и ширину. Это можно легко изменить, чтобы работать аналогично левой половине или правой половине привязки (Windows + Левая или Правая), раскомментировав ; WinMaximize, A line. Если вы хотите сохранить поведение по умолчанию, но иногда используете поведение с половинной привязкой, просто разверните окно до привязки.

Работает с Windows 7 64-bit и AutoHotKey v1.1.14.03.

;-------------------------------------------------------------------;
; Returns the maximum or minimum value for any number of inputs
; i.e. Max(5,4,7,10) will return 10
;-------------------------------------------------------------------;
Min(params*)
{
  r := params[1]
  for index, param in params
    if (param < r)
      r := param
  return r
}
Max(params*)
{
  r := params[1]
  for index, param in params
    if (param > r)
      r := param
  return r
}

;-------------------------------------------------------------------;
; WindowsKey+Ctrl+Up / WindowsKey+Ctrl+Down
; Resizes window to half the screen height and moves it to the top
; or bottom of whichever screen has the largest overlap.
; By default, the window retains its horizontal (x) position and
; width.  To change this, uncomment the WinMaximize line.
;-------------------------------------------------------------------;
UpDownSnap(Direction)
{
  ; WinMaximize, A
  WinGetPos, x, y, w, h, a, , ,
  SysGet , Count, MonitorCount
  refArea := 0
  Loop, %count%
  {
    SysGet, m, MonitorWorkArea, %A_Index%
    xo := Max(0, Min(x + w, mRight) - Max(x, mLeft))
    yo := Max(0, Min(y + h, mBottom) - Max(y, mTop))
    area := xo * yo
    if (area > refArea)
    {
      monTop := mTop
      monBottom := mBottom
      refArea := area
    }
  }

  ; If the refArea is still equal to 0, the window does
  ; not overlap with any monitors. Wat?
  if (refArea > 0)
  {
    if (direction = 1)
      newY := monTop
    Else
      newY := (monBottom - monTop) / 2 + monTop
    WinMove , a, , x, newY, w, (monBottom - monTop) / 2
  }
}
^#Up::UpDownSnap(1)
^#Down::UpDownSnap(0)
5

Разместите ваши окна примерно так, как вы хотите -> щелкните правой кнопкой мыши на панели задач -> "Показать окна в стеке" -> прибыль!

4

Как предложил здесь Rain, PowerResizer работает хорошо. Не очень настраиваемый - вы не можете изменить сочетания клавиш, но это по крайней мере с открытым исходным кодом. Как отмечает JoeB, вы можете нажимать их при перетаскивании окна: W для перемещения вверх и Z для перемещения вниз. A - двигаться влево, S - двигаться вправо. Или просто перетащите окно к краю. Нажатие 1,2,3 и 4 во время перетаскивания приведет к четверти привязки к углу. Я счастлив, попробуй.

3

Если у вас есть видеокарта AMD, вы можете использовать «Hydravision».

(1) Откройте Центр управления Catalyst (2) В разделе "Рабочий стол и дисплеи" нажмите «Еще ...» (3) В разделе "Hydravision" нажмите "HydraGrid" (4) Установите флажок "Включить HydraGrid" (5) Нажмите "Изменить HydraGrid" "и поместите линии сетки, где вы хотите, например, наполовину вверх портретный монитор (6) Применить

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

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

2

Проверьте AquaSnap. Вы можете перетащить мышью, как и ожидалось, используйте Ctrl+Mouse, чтобы изменить размеры двух плиточных окон одновременно, помимо множества других функций.

Смотрите удивительные возможности стыковки

Вы также можете использовать самые разные горячие клавиши. Эта программа переопределяет некоторые настройки Windows по умолчанию, которые вы уже привыкли использовать, кроме изменения Win+Up и Win+Down для дока вверх / вниз.

Примеры горячих клавиш

WindowSpace работает, но не так хорошо, и может на некоторое время зависнуть, когда вы нажмете применить. Для сравнения, бесплатная / пробная версия Aquasnap Pro очень удобна.

1

Windows предлагает множество опций, включая STACKING, SIDE BY SIDE и CASCADING. Это можно сделать, щелкнув правой кнопкой мыши пустую область на панели задач (обычно в нижней части экрана) и выбрав. Да, это не сочетание клавиш, но оно довольно близко.

Не верь мне, получи это прямо изо рта лошади, Microsoft здесь.

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

1

Исправлена ошибка в решении Джейсона Клемента. Когда окно защелкивается вертикально, ранее оно также не занимало бы ширину монитора. Он просто останется на текущей ширине окна, но будет привязан к 1/2 монитора по вертикали. С помощью этого исправления он достигает 50% вертикальной высоты вверх или вниз и 100% горизонтальной ширины монитора.

Кроме того, для тех, кто может не знать AHK ...

  1. Скачать AutoHotKey
  2. Создайте текстовый файл в блокноте. Вставьте код в него. Сохраните его с правильным расширением для AutoHotKey, например, «VerticalSnap.ahk»
  3. Щелкните правой кнопкой мыши по файлу из Проводника, выберите "Компилировать скрипт"
  4. Компиляция должна создать файл «VerticalSnap.exe» в этом каталоге.
  5. Откройте run.exe, введите «shell:startup» и нажмите Enter.
  6. Новое окно проводника должно открыться до папки "Автозагрузка".
  7. Скопируйте / вставьте файл .exe в эту папку автозагрузки.
  8. При следующей загрузке этот скрипт должен быть запущен. Вы можете использовать CRTL+WINDOWS+UPARROW или +DOWNARROW, чтобы привязаться к верхней части нижней половины вашего монитора. Обратите внимание, что окно не должно быть развернуто, чтобы это работало.

Надеюсь, это поможет, и спасибо Джейсон!

;-------------------------------------------------------------------;
; Returns the maximum or minimum value for any number of inputs
; i.e. Max(5,4,7,10) will return 10
;-------------------------------------------------------------------;
Min(params*)
{
  r := params[1]
  for index, param in params
    if (param < r)
      r := param
  return r
}
Max(params*)
{
  r := params[1]
  for index, param in params
    if (param > r)
      r := param
  return r
}

;-------------------------------------------------------------------;
; WindowsKey+Ctrl+Up / WindowsKey+Ctrl+Down
; Resizes window to half the screen height and moves it to the top
; or bottom of whichever screen has the largest overlap.
; By default, the window retains its horizontal (x) position and
; width.  To change this, uncomment the WinMaximize line.
;-------------------------------------------------------------------;
UpDownSnap(Direction)
{
  ; WinMaximize, A
  WinGetPos, x, y, w, h, a, , ,
  SysGet , Count, MonitorCount
  refArea := 0
  Loop, %count%
  {
    SysGet, m, MonitorWorkArea, %A_Index%
    xo := Max(0, Min(x + w, mRight) - Max(x, mLeft))
    yo := Max(0, Min(y + h, mBottom) - Max(y, mTop))
    area := xo * yo
    if (area > refArea)
    {
      monTop := mTop
      monBottom := mBottom
      monLeft := mLeft
      monRight := mRight
      refArea := area
    }
  }

  ; If the refArea is still equal to 0, the window does
  ; not overlap with any monitors. Wat?
  if (refArea > 0)
  {
    if (direction = 1)
      newY := monTop
    Else
      newY := (monBottom - monTop) / 2 + monTop
    WinMove , a, , monLeft, newY, (monRight - monLeft), (monBottom - monTop) / 2
  }
}
^#Up::UpDownSnap(1)
^#Down::UpDownSnap(0)
0

Существует независимый способ для достижения этой функциональности, но AFAIK:

  • Это требует использования мыши
  • Это работает только для двух окон.

Рецепт:

  1. Закрепите окна бок о бок обычным способом.
  2. Нажмите Win+Down чтобы одно из окон заняло четверть экрана
  3. Выберите другое окно и нажмите Win+Up чтобы другое окно заняло противоположную четверть экрана
  4. Используйте мышь, чтобы захватить край окна и изменить его размер до края экрана, таким образом увеличивая ширину каждого окна без изменения их высоты.
0

Если вы используете монитор Dell, вы можете установить Dell Display Manager, у которого есть опции для разделения дисплея на сетку.

Затем вы можете перетащить окно в ячейку, удерживая нажатой клавишу Shift.

0

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

Я обнаружил, что расширение Chrome "Tab Resize - Split Screen Layouts" сделало это очень простым для меня.

Просто откройте новое окно Chrome, щелкните значок расширения вкладки «Изменить размер», выберите вариант 2x1. Красиво и просто сейчас.

0

Опция, которая показалась мне полезной, - это разделить ваши мониторы на виртуальные половины, используя DisplayFusion. Вы настраиваете это следующим образом:

  • Щелкните правой кнопкой мыши значок DisplayFusion, расположенный в области уведомлений, и выберите « Monitor Configuration .
  • Выберите монитор, который вы хотите настроить.
  • Добавьте vertical split на монитор. (Вы можете поиграть с этим и разделить свои мониторы еще больше.)

Когда эта функция включена, вы сможете использовать клавиши со стрелками Windows + для перемещения по окну, чтобы развернуть эту новую вертикально разделенную область монитора. Я собираюсь запустить два моих монитора 1920x1200 в портретном режиме, как только появятся мои 30 ", и вертикальные окна будут необходимы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .