Windows 7中的键盘快捷键到中心窗口


18

我发现Win-left箭头和Win-right箭头在Windows 7中确实非常有用,可以使窗口分别占据屏幕左侧或右侧的50%。但是,是否有任何命令可以使窗口占据屏幕的50%并居中?即使它不调整窗口的大小,是否有键盘快捷方式可以使窗口在垂直和水平方向上居中?谢谢。

Answers:



13

Windows +箭头键在这里非常有用。

  • (Windows)+ ← (Left)+ → (Right) 循环切换到屏幕的左或右50%,然后将窗口恢复到其原始大小和位置。
  • + ↑ (Up)最大化窗口。
  • + ↓ (Down) 如果窗口最大化,则将其还原,否则将其最小化。

2
那似乎没有为我做。看起来它使我的窗口最小化,或者如果窗口最大化则将其还原。
Sarah Vessels,2010年

2
在我的机器上,双监视器,我可以单击Win-Left,它将在该屏幕上左移50%。如果我继续单击Win-Left,它将在另一个屏幕上向右移50%,下一个将居中,最后在另一个屏幕上向左移。Win-Right做相反的
事情

1
失败是完全错误的。它可以从最大化的窗口中还原窗口,也可以将其最小化(如果已经还原)。它不会在窗口的中心位置做任何事情。
乔伊(Joey)

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 2015年

这仅在窗口未最大化的情况下有效。
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 main,#2和#3,它在#1和#3上工作正常,但是将窗口从#2移到#1。
DKroot

1
嗯,这很奇怪。我更新了它,使其可以在多台显示器上使用。我试图使它尽可能简短,并尽可能地保持在主题上,但您可能想像论坛中的豪华版一样去购买豪华版;)
vctls

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.