Сочетание клавиш в Windows 7 в центре окна


18

Я считаю, что стрелка Win-left и Win-right действительно полезны в Windows 7, чтобы окно занимало 50% левой или правой стороны экрана соответственно. Однако, есть ли какая-нибудь команда, которая заставит окно занимать 50% экрана и будет центрировано? Даже если он не регулирует размер окна, есть ли комбинация клавиш, чтобы центр окна располагался вертикально и горизонтально? Благодарю.

Ответы:


3

Вы должны проверить WinSplit Revolution ; он имеет то, что вам нужно и настраивается.

альтернативный текст


Похоже, что с 3-мя нажатиями средней кнопки в окне WinSplit мое сфокусированное окно растягивается и заполняет всю высоту монитора, что нормально, и центрируется по горизонтали. :)
Сара Сосуды

13

Клавиши со стрелкой Windows + здесь очень полезны.

  • (Windows)+ ← (Left) и + → (Right) циклически переходят влево или вправо на 50% экрана и восстанавливают окно до его исходного размера и положения.
  • + ↑ (Up)максимизирует окно.
  • + ↓ (Down) восстанавливает окно, если оно развернуто, и минимизирует его в противном случае.

2
Похоже, это не для меня. Похоже, это минимизирует мое окно или восстанавливает его, если окно развернуто.
Сара Весселс

2
На моей машине, с двумя мониторами, я могу нажать Win-Left, и на этом экране она уйдет влево на 50%. Если я продолжу нажимать на Win-Left, он перейдет вправо на 50% на другом экране, следующий будет центрирован и, наконец, оставлен на другом экране. Win-Right делает обратное
wbeard52

1
Win-Down совершенно не так. Он либо восстанавливает окно из развернутого, либо минимизирует его (если оно уже восстановлено). Он ничего не сделает с окном.
Джои

3
@ wbeard52: Я только что неоднократно пробовал Win-Left, и он перебирал 50% в левой части экрана, 50% в правой части экрана и то, как изначально было мое окно (не по центру, маленькое).
Сара Весселс

2
Повторное нажатие Win-Left или Win-Right просто циклически перемещает окно слева / справа на 50% доступных мониторов, а затем возвращает его на прежнее место. Это никак не центрирует окно.
dgw

13

Это не совсем для центрирования, но позволяет легко перемещать окно влево и вправо (и вверх и вниз).

  1. Сфокусируй окно.
  2. Нажмите Alt+ Space.
  3. Нажмите M(для «Переместить»).
  4. Используйте клавиши со стрелками, чтобы переместить окно именно туда, где вы хотите.
  5. Нажмите, Enterкогда закончите.

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

Это работает, только если окно не развернуто.
TylerH

@TylerH: это правда. Однако для этого нужно всего лишь нажать windows + вправо (чтобы расположить окно на 50% вправо), а затем следуйте инструкциям в этом ответе, чтобы переместить его влево.
Расмус Ларсен

5

Я бы предложил использовать AutoHotkey .
Пример сценария, который выполняет именно то, что вы просили, уже был предоставлен в ответе на другой вопрос .
Вот код скрипта:

#!Up::CenterActiveWindow() ; if win+alt+↑ is pressed

CenterActiveWindow()
{
    ; Get the window handle from de active window.
    winHandle := WinExist("A")

    VarSetCapacity(monitorInfo, 40)
    NumPut(40, monitorInfo)

    ; Get the current monitor from the active window handle.
    monitorHandle := DllCall("MonitorFromWindow", "uint", winHandle, "uint", 0x2)
    DllCall("GetMonitorInfo", "uint", monitorHandle, "uint", &monitorInfo) 

    ; Get WorkArea bounding coordinates of the current monitor.
    A_Left   := NumGet(monitorInfo, 20, "Int")
    A_Top    := NumGet(monitorInfo, 24, "Int")
    A_Right  := NumGet(monitorInfo, 28, "Int")
    A_Bottom := NumGet(monitorInfo, 32, "Int")

    ; Calculate window coordinates.
    winW := (A_Right - A_Left) * 0.5 ; Change the factor here to your desired width.
    winH := A_Bottom
    winX := A_Left + (winW / 2)
    winY := A_Top

    WinMove, A,, winX, winY, winW, winH
}

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

Редактировать : теперь работает с несколькими мониторами и использует рабочую область для верхних и нижних значений.

Кстати, WinSplit Revolution был прекращен и заменен платным приложением под названием MaxTo.
Помимо того, что AutoHotkey является очень мощным и охватывает гораздо больше вариантов использования, он также является бесплатным и открытым исходным кодом.


1
Почти здорово ... За исключением одного серьезного вопроса. При наличии нескольких расширенных мониторов это всегда перемещает окно со второго монитора на основной. Любые идеи о том, как это исправить? WinMove, похоже, не имеет никаких дополнительных параметров.
DKroot

@DKroot Мне придется попробовать второй экран. Я использовал это только на одном ультраширок. Вот что говорит документ по WinMove: «Отрицательные значения разрешены для координат x и y для поддержки систем с несколькими мониторами и для полного перемещения окна за пределы экрана». Есть примеры нескольких мониторов скриптов на форуме, но она становится все более сложным: autohotkey.com/board/topic/...
vctls

Большое спасибо за ссылку! Я смог объединить ваш сценарий и связанный сценарий в один прекрасно работающий. (Связанный скрипт не изменяет размер, следовательно, не работает, например, на развернутых окнах). Сценарий слишком длинный, чтобы быть включенным в комментарии. Вы не против, чтобы я опубликовал это как отдельный ответ?
DKroot

Еще одно замечание по тестированию вашего скрипта: интересно, что в установке с 3 мониторами, например, № 1 основной, № 2 и № 3, он отлично работает на № 1 и № 3, но перемещает окна с № 2 на № 1.
DKroot

1
Да, это странно. Я обновил его, чтобы он работал на нескольких мониторах. Я старался держать его как можно более кратким и по теме, но вы можете захотеть пойти на Deluxe Edition, как на форуме;)
vctls

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