Можно ли «привязать» верх / низ вместо просто влево / вправо в Windows 7?

125

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

Абе Мисслер
источник
@RockPaperLizard Вы также должны помнить, что Windows 7 действительно старая и на сегодняшний день является единственной ОС, имеющей встроенную функцию привязки. Мне нужно найти сторонний скрипт типа «расширение», чтобы сделать это, например, на Mac. Кроме того, в Windows 10 есть Snap для любого направления, включая углы! Другими словами, я думаю, что команда Windows действительно пытается на стороне UX. Пользовательский интерфейс иногда является личностным тестом, но UX - это то, в чем исторически Windows хороша.
Джозеф Хансен
@ Джозеф Я действительно согласен с тем, что MS добилась многих успехов на арене UX. Они даже были готовы исследовать новые территории, хотя и не были коммерчески успешными, с Microsoft Бобом . К сожалению, их успехи омрачены множеством серьезных ошибок, наиболее заметным из которых является Windows 8 . Я не знаю, был ли провал этого проекта их командой UX или отказ руководства выслушать их.
RockPaperLizard

Ответы:

73

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

  • левая половина оснастки ( Windows+ left)
  • правая половина оснастки ( Windows+ right)
  • привязка к высоте экрана ( Windows+ shift+ up)
  • максимальная оснастка ( Windows+ up)
  • "открепить" ( Windows+ down)
  • привязка к следующему монитору / дисплею ( Windows+ shift+ ( leftили right))

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

  • минимизировать все ( Windows+ m)
  • свернуть все, кроме активного окна ( Windows+ Home)
  • Aero peek (просмотр рабочего стола, все окна становятся прозрачными) ( Windows+ space)
Джозеф Хансен
источник
Аккуратно, я пытался выяснить, как сохранить вертикальное положение фиксированным, но разрешить горизонтальное перемещение, не используя левую / правую привязку экрана и не перенастраивая ширину окна, а полная привязка высоты экрана делает именно то, что я хотел.
JAB
4
О, только что обнаружил, что двойной щелчок по верхнему краю строки заголовка (то есть, когда отображается вертикальная двусторонняя стрелка) также делает привязку к высоте экрана.
JAB
7
В Windows 10 теперь есть еще один вариант: после привязки влево или вправо, вы можете нажать upили down, например, чтобы привязаться к верхнему левому углу . Не то, что хотел ОП, но может быть полезно для других.
Андре
нет "полный снимок экрана?" -_-
Шаян
Для downvoter, это правильный ответ для Windows 7. Windows 10 имеет новые опции привязки ...
Джозеф Хансен
58

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

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

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

Натаниель
источник
1
Это действительно полезно. Я знаю это с win 98, но на самом деле я никогда не использовал его в win 7, потому что в win XP и предыдущих версиях вы можете выбирать кнопки панели задач, чтобы выбрать, какие окна складывать, но это больше не работает в Windows 7, поэтому, когда я выбираю опция будет складывать все окна на экране. Техника блога: знаете ли вы: показывать окна в стеке, в каскаде или рядом друг с другом
phuclv
Это полезно, но оно будет складывать все окна во всех мониторах.
Лев
Это по-прежнему работает и для Windows 10.
snickers10m
@Leo - и на всех компьютерах тоже. Интересно :)
J Bryan Price
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
northben
источник
Это работает, но также открывает стартовый экран в Windows 8.1. Как решить эту проблему?
Габриэль Hautclocq
2
Это именно то, что я надеялся найти. Спасибо! Я заметил, что команда не меняет ширину окна. Есть ли способ автоматически переходить к полноэкранной ширине, когда она щелкает вверх / вниз?
Алекс П. Миллер
1
Это не работает для меня на Windows 10. У меня есть 3 монитора, которые из 2 находятся в вертикальном режиме. Вы явно говорите о двух рабочих областях, но не уверены, что это причина. Также вы должны указать, какую ключевую комбинацию вы должны нажать в этом ответе для людей, которые не знают синтаксис AHK
Йоаким Содерберг
1
Он работает только частично на моем Windows 7 с одним горизонтальным и одним вертикальным монитором. Отлично на горизонтальном мониторе, но на вертикальном, кажется, берет высоту от горизонтального.
суровый
21

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

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

Скриншот:

Скриншот

Рассел Дэвис
источник
9
Требуется ли в какой-то момент лицензионный ключ за 25 долларов?
Ерф
2
Я предпочитаю AquaSnap (он бесплатный или стоит 9 долларов за мультимониторинг): youtube.com/watch?v=bOVOEebpiWc Но, поскольку Windows 10 больше не нужна, потому что наиболее важные функции теперь являются частью ОС.
mgutt 12.12.16
1
AquaSnap теперь стоит $ 18 (если вы используете несколько мониторов), и он делает много вещей, которых нет в Win10, таких как привязка сверху / снизу и мозаика. Очень круто.
Ишервуд
9

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

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

rmart
источник
8

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

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

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

Работает с 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)
Джейсон Клемент
источник
1
Я хотел бы, чтобы это сработало. Я получаю The following variable name contains an illegal character: "params*". Пока я использую скрипт @ northben
биты
Спасибо за этот скрипт. Супер полезно. Я обнаружил, что он не загрузится, пока не уберу пробел между именем функции UpDownSnap и круглыми скобками.
Джейсон Дюфаир
Может быть, это была проблема с битами выше. Интересно, что мой собственный сценарий не имеет места; Я не уверен, как он туда попал. Я удалил это, спасибо.
Джейсон Клемент
Хорошо работает в Windows 8.1 :-)
Габриэль Hautclocq
Спасибо @JasonClement за ваше решение. Я исправил ошибку в вашем решении и опубликовал в качестве другого ответа.
Зи
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, которая имеет собственную версию этого типа программного обеспечения и больше не является бесплатной.

Marcin
источник
Программное обеспечение все еще доступно от softonic и все еще творит чудеса в Windows 10 начиная с
JoeB
5

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

clevboy
источник
4

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

leetNightshade
источник
Я только что попробовал WindowSpace; если вы не возражаете заплатить 25 долларов, это гораздо лучшее решение.
leetNightshade
1
Там есть документация! readme.txt в папке установки файлов программы. Не говоря уже о том, что он делает именно то, что я хотел, это была вертикальная половина оснастки. 1/4 оснастки - дополнительный бонус!
страшил
3

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

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

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

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

Matt
источник
1
Я сделал ошибку, установив Catalyst Control Center, чтобы опробовать Hydravision. Эта программа - боров, и я ищу другое решение.
Дана
2

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

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

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

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

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

leetNightshade
источник
1

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

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

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

Скотт Биггс
источник
1

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

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

Рецепт:

  1. Закрепите окна бок о бок обычным способом.
  2. Нажмите, Win+Downчтобы одно из окон заняло четверть экрана
  3. Выберите другое окно и нажмите, Win+Upчтобы другое окно заняло противоположную четверть экрана
  4. Используйте мышь, чтобы захватить край окна и изменить его размер до края экрана, таким образом увеличивая ширину каждого окна без изменения их высоты.
Лео
источник
Хороший совет, но это тонна работы, чтобы понять это каждый раз.
11101101b
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

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

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

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

Jmac
источник
0

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

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

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

Джефф
источник
1
Похоже, что человек, который задал вопрос, хотел решения, которое работает для всех программ, а не только Chrome. У вас есть что-то, что делает это?
Бен Н
0

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

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

Майкл Чжэн
источник