在 Windows 7 中可以“捕捉”顶部/底部而不是左侧/右侧?

Abe*_*ler 143 windows-7 keyboard-shortcuts usability

在 Windows 7 中,我知道您可以执行Windows+Left在屏幕的左半部分放置一个窗口。有没有可以做顶部和底部的功能?

Joe*_*sen 87

不可以。唯一可用的捕捉选项是:

  • 左半按 ( Windows+ left)
  • 右半按 ( Windows+ right)
  • 全屏幕高度卡(Windows+ shift+ up
  • 最大化捕捉 ( Windows+ up)
  • “取消对齐” ( Windows+ down)
  • 捕捉到下一个监视器/显示器(Windows+ shift+(leftright))

编辑:您可能喜欢的其他很棒的组合:

  • 最小化所有 ( Windows+ m)
  • 最小化除活动窗口之外的所有窗口 ( Windows+ Home)
  • Aero peek(查看桌面,所有窗口变为透明)( Windows+ space)

  • 在 Windows 10 中,现在有另一个选项:向左或向右对齐后,您可以按“向上”或“向下”,例如对齐到*左上角*。不是 OP 想要的,但可能对其他人有帮助。 (9认同)
  • 哦,刚刚发现双击标题栏的顶部边缘(即显示垂直双端箭头时)也会进行屏幕高度对齐。 (5认同)

小智 65

我使用以下步骤来完成此操作:

  1. Windows+ D(最小化所有窗口)
  2. 然后使用我的鼠标将我想要堆叠的窗口放置在每个显示器上的一般位置(不要费心调整它们的大小)
  3. 然后右键单击任务栏并从上下文菜单中选择“显示堆叠的窗口”,然后恢复我想要的任何其他窗口

注意:您必须最小化任何不想堆叠的窗口。这就是第 1 步的目的。


Rus*_*vis 24

WindowSpace提供了此功能。做你所要求的:

  • 转到“移动和调整大小”选项卡 Settings
  • 对于“顶边:”,选择“移到顶边”
  • 对于“底部边缘:”,选择“移动到底部”

截屏:

截屏

  • 有时需要 25 美元的许可证密钥吗? (11认同)
  • 我更喜欢 AquaSnap(多显示器免费或 9 美元):https://www.youtube.com/watch?v=bOVOEebpiWc 但由于 Windows 10 不再需要它,因为最重要的功能是操作系统的一部分,现在. (2认同)

nor*_*ben 24

我写了一个 AutoHotKey 脚本来捕捉窗口的顶部和底部,因为我也对此感到沮丧。你可以从我的网站下载:http : //www.pixelchef.net/how-snap-windows-horizo​​ntally-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
Run Code Online (Sandbox Code Playgroud)

  • 这正是我希望找到的。谢谢!我注意到该命令不会改变窗口的宽度。当它向上/向下对齐时,有什么方法可以自动进入全屏宽度? (2认同)
  • 它只能在我的 Windows 7(配有一台水平显示器和一台垂直显示器)上部分运行。在水平显示器上完美,但在垂直显示器上,它似乎占据了水平显示器的高度。 (2认同)

rma*_*art 10

目前我面前没有 Windows 7 机器,但是自从 Windows 95(甚至可能更早)以来,就可以选择水平平铺窗口。最小化除要查看的顶部和底部的两个窗口之外的所有内容,右键单击任务栏,然后选择水平平铺 Windows。它将调整每个窗口的大小以占据垂直屏幕区域的一半。这对单个窗口没有用,正如另一个答案所述,它没有键盘快捷键,但有时我发现它很方便。

更正:在 Windows 7 上,这称为“显示窗口堆叠”


Jas*_*ent 10

与 northben 类似,我也写了一个 AutoHotKey 脚本,虽然有点不同,所以我认为它应该得到自己的答案。此脚本应适用于任意数量的监视器或监视器方向。

命令绑定到Windows+ Ctrl+UpDown不是Shift为了不干扰现有的Windows+ Shift+ Up

此工作原理类似于全屏幕高度卡扣(Windows+ Shift+Up在该窗口保持其水平位置和宽度)。通过取消注释该行,可以轻松地将其更改为类似于左半部或右半部捕捉(Windows+LeftRight; WinMaximize, A。如果您想保留默认行为,但有时会使用半捕捉行为,只需在捕捉前最大化窗口即可。

适用于 Windows 7 64 位和 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)
Run Code Online (Sandbox Code Playgroud)

  • @JasonClement 如果您取消注释该行,它会最大化到整个监视器(就像一个普通的旧最大化)。我的解决方案只最大化宽度,保持 50% 的高度。 (2认同)

Mar*_*cin 8

我用过的最好的程序就是 WinSplit Revolution:http ://winsplit-revolution.com/

我强烈推荐它,因为它使用起来非常简单,甚至可以与多台显示器配合使用。

演示视频:http : //winsplit-revolution.com/screenshots/videos-demos

此应用程序是免费软件,并在知识共享署名-非商业性-禁止衍生作品 3.0 下发布。

编辑:

WinSplit 似乎不再可用,该网站已被 Digital Creations AS 接管,后者拥有自己的此类软件版本,不再免费


小智 5

随心所欲地放置您的窗口--> 右键单击​​任务栏-->“显示窗口堆叠”--> 获利!


Zee*_*Zee 5

修复了 Jason Clement 解决方案中的一个错误。当窗口垂直对齐时,以前它也不会占用显示器的宽度。它只会保持当前的窗口宽度,但会垂直捕捉到 1/2 监视器。通过此修复,它会捕捉到显示器的 50% 垂直高度和 100% 水平宽度。

另外,对于那些可能不知道 AHK 的人......

  1. 下载自动热键
  2. 在记事本中创建一个文本文件。将代码粘贴到其中。使用 AutoHotKey 的正确扩展名保存它,例如“VerticalSnap.ahk”
  3. 右键单击资源管理器中的文件,选择“编译脚本”
  4. 编译应在该目录中创建一个“VerticalSnap.exe”文件。
  5. 打开run.exe,输入“shell:startup”并回车。
  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)
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

174037 次

最近记录:

4 年,7 月 前