在Windows 7中,我知道您可以Windows+ Left在屏幕的左半部分放置一个窗口。是否有可以同时使用顶部和底部的功能?
在Windows 7中,我知道您可以Windows+ Left在屏幕的左半部分放置一个窗口。是否有可以同时使用顶部和底部的功能?
Answers:
否。唯一可用的快照选项是:
编辑:您可能喜欢的其他很棒的组合:
up
或down
(例如,以对齐到左上角)。这不是OP想要的,但可能会对其他人有所帮助。
我使用以下步骤来完成此任务:
注意:您必须最小化不需要堆叠的任何窗口。这就是步骤1的目的。
我写了一些AutoHotKey脚本来捕捉Windows的顶部和底部,因为我对此也感到沮丧。您可以从我的网站下载它: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相似,我也写了一个AutoHotKey脚本,尽管有所不同,所以我认为它应该得到自己的回答。该脚本应可用于任何数量的监视器或监视器方向。
该命令被绑定到Windows+ Ctrl+ Up和Down代替Shift,以便不与现有的干扰Windows+ Shift+ Up。
这与全屏高度捕捉(Windows+ Shift+ Up)相似,因为窗口将保持其水平位置和宽度。通过取消注释该行,可以很容易地将其更改为类似于左半部或右半部捕捉(Windows+ Left或Right); 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)
The following variable name contains an illegal character: "params*"
。现在我正在使用@ northben的剧本
我曾经使用过的最好的程序,可以完成以上任务,就是WinSplit Revolution:http://winsplit-revolution.com/
我强烈推荐它,因为它使用起来非常简单,甚至可以在多台显示器上很好地工作。
演示视频:http : //winsplit-revolution.com/screenshots/videos-demos
此应用程序是免费软件,并在知识共享署名-非商业性-无衍生作品3.0下发布。
编辑:
似乎WinSplit不再可用,该网站已由Digital Creations AS接管,该公司拥有自己的此类软件版本,并且不再免费
正如Rain 在这里建议的那样,PowerResizer运作良好。不是非常可定制的-您无法更改键盘快捷键,但至少是开源的。如JoeB所述,您可以在拖动窗口时按以下按钮:W向上移动,Z向下移动。A是向左移动,S是向右移动。或者只是将窗口拖动到边缘。拖动时同时按1,2,3和4,将四分之一捕捉到一个角。我对此感到满意,请尝试一下。
如果您有AMD显卡,则可以使用“ Hydravision”。
(1)打开Catalyst Control Center(2)在“桌面和显示”下单击“更多...”(3)在“ Hydravision”下单击“ HydraGrid”(4)选中“启用HydraGrid”(5)单击“编辑HydraGrid” ”,然后将网格线放置在您想要的位置,例如,将人像监视器中途放在中间(6)
现在,当您使用Windows时,可以右键单击标题栏并选择“附加到网格”,然后将其从一个地方拖到另一个位置,它将捕捉到网格。
我使用此设置以纵向模式运行3x1 24“显示器,这是我发现将窗口捕捉到每个显示器的上半部分和下半部分的最快方法。
看看AquaSnap。您可以按预期的方式拖动鼠标,使用Ctrl + Mouse可以同时调整两个平铺窗口的大小,以及其他许多功能。
您还可以使用各种热键。除了将Win + Up和Win + Down的Dock更改为顶部/底部之外,该程序还将覆盖您已经习惯使用的一些Windows默认设置。
WindowSpace可以工作,但效果却不尽如人意,当您单击apply时可以挂断一段时间。相比之下,Aquasnap Pro的免费/试用版是非常流畅的体验。
修复了Jason Clement解决方案中的错误。当窗口垂直捕捉时,以前它也不会占用显示器的宽度。它只会保持当前窗口宽度,但会垂直捕捉到1/2监视器。使用此修复程序,它可以将显示器上下垂直高度固定为50%,显示器水平宽度固定为100%。
此外,对于那些可能不了解AHK的人...
希望对您有所帮助,并感谢Jason!
;-------------------------------------------------------------------;
; 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)
我发现有用的一个选项是使用DisplayFusion将显示器细分为虚拟的一半。您可以通过以下操作进行设置:
Monitor Configuration
。vertical split
到监视器。(您可以尝试使用它,并进一步拆分显示器。)启用此功能后,您应该可以使用Windows+ Arrow键浏览窗口,以最大化显示在显示器的新垂直分割区域中。我的30英寸显示器进入后,我将以纵向模式运行两台1920x1200显示器,并且必须垂直捕捉窗口。