如何移动屏幕外打开的窗口?
我有一个双显示器的设置,我最近玩了一下定位设置,我的一些单窗口应用程序会保留它们最后关闭的位置,并在同一位置打开。不幸的是,现在它们被放置在了我的屏幕可查看的区域之外!我的一些单窗口应用程序保留了它们最后关闭的位置,并在之后打开相同的位置。
有没有什么方法可以强制某个窗口进入可视区域?
我有一个双显示器的设置,我最近玩了一下定位设置,我的一些单窗口应用程序会保留它们最后关闭的位置,并在同一位置打开。不幸的是,现在它们被放置在了我的屏幕可查看的区域之外!我的一些单窗口应用程序保留了它们最后关闭的位置,并在之后打开相同的位置。
有没有什么方法可以强制某个窗口进入可视区域?
我使用的方法是:
对于Windows 10,为了使用旧的光标键移动窗口的技巧,你需要在任务栏中打开上下文菜单时按下Shift键。
你可以右键点击任务栏上的程序按钮,然后点击 “移动"。现在你可以使用键盘上的箭头按钮将窗口移动到你能看到的地方。这需要一些操作,有时窗口会 "卡住 "在显示器边缘。你也可以尝试使用鼠标,但如果你还不能看到窗口,键盘会更可靠一些;-)
早在有任务栏之前,我曾经用Alt+Space来解决这个问题,用Alt+Space调出窗口菜单,然后用M键移动功能。然后用方向键就可以将窗口移回屏幕上。
另一个快速方法是在任务栏上点击任务栏,选择Cascade Windows。
编辑: 根据评论停止使用
_要想在未来快速解决这个问题,并在双屏上方定位应用,我可以推荐Winsplit Revolution。它可以减少解决这个问题,只需按下Ctrl-Alt和数字键盘键就可以将窗口放回你想要的位置。
我使用了一个叫Shove-it的小工具,它可以简单地检查任何窗口是否在屏幕边缘之外,然后把它重新推回屏幕上。这是个古老的软件(主页上也证明了这一点),但在所有的Windows版本上都可以使用。
你可以用NIRSOFT WinLister。我注意到,当你使用经典主题时,"移动 “方法在Windows 7上是不可用的,而且其他各种方法都失败了,所以我把我的 "如果其他方法都失败了 "的替代方法贴出来。下载WinLister应用程序这里。
截图 这里.
熟悉PowerShell的朋友可以试试这个方法:
如果窗口是一个主窗口,它将被移动到屏幕的左上角。
如果窗口是另一个程序的子窗口,它的左上角将与父窗口的左上角对齐。 https://gist.githubusercontent.com/JohnLBevan/1593bbb860c2d2af436a1c9414e8adfa/
选择窗口(例如,使用Alt+Tab)。然后按住Alt+F7,用方向键将窗口移回视野。完成。
有时很难盲目地知道隐藏窗口的位置(从而知道如何将其移动到屏幕上)。选择窗口时的动画可能会有帮助。由于我的设置(我偶尔会在笔记本屏幕上方使用第二个屏幕),所以出现在屏幕外的窗口通常在屏幕下方。因此,按住Alt+F7+Up键可以将其带入视野。
在某些情况下,尽管在远程位置有多个屏幕,但您可能无法从您的位置访问它们。在这种情况下,如果你可以打开应用程序的其他实例,那么就打开这些实例。前几个实例几乎肯定会在任务栏中出现更多的幻影窗口。继续这样做。最终,它们将开始填充到主视图中。然后使用任务栏图标右键单击并关闭屏外实例。一旦没有屏幕外的实例打开,关闭主屏幕上的实例。下次打开该应用程序时,它将出现在主屏幕上,而不是 “关机"。
您还可以使用UltraMon(非免费,Windows,GUI)设置键盘快捷方式将窗口移动到下一个或上一个显示器。
我写了一个叫Borderline的工具,它可以在运行时自动将屏幕外的窗口移回屏幕上。你必须在你需要的时候运行它(如果你把它指定一个键盘快捷方式或者把它放在开始菜单中,效果会更好),但这也意味着它不会一直在后台运行。
来自 Tymric:
我写了一个AHK脚本,使用方法:
用法:
Win + Alt + 箭头。将活动窗口移动到箭头所指方向的显示器上。注意,如果在你的设置中,如果你试图从2号显示器上移,或者从3号显示器右移,这可能会导致你的窗口移动到屏幕外。我将在未来更新。
Win + Alt + Number。将活动窗口移动到指定的显示器编号
#Persistent
SysGet, MonitorCount, MonitorCount
#!Up::
GoSub CalculateDisplacement
WinMove, A, , %xPos%, %displaceYneg%
return
#!Down::
GoSub CalculateDisplacement
WinMove, A, , %xPos%, %displaceYpos%
return
#!Left::
GoSub CalculateDisplacement
WinMove, A, , %displaceXneg%, %yPos%
return
#!Right::
GoSub CalculateDisplacement
WinMove, A, , %displaceXpos%, %yPos%
return
#!1::
GoSub CalculateDisplacement
WinMove, A, , %xPosOn1%, %yPosOn1%
return
#!2::
if (MonitorCount > 1) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn2%, %yPosOn2%
}
return
#!3::
if (MonitorCount > 2) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn3%, %yPosOn3%
}
return
#!4::
if (MonitorCount > 3) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn4%, %yPosOn4%
}
return
#!5::
if (MonitorCount > 4) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn5%, %yPosOn5%
}
return
#!6::
if (MonitorCount > 5) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn6%, %yPosOn6%
}
return
#!7::
if (MonitorCount > 6) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn7%, %yPosOn7%
}
return
#!8::
if (MonitorCount > 7) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn8%, %yPosOn8%
}
return
#!9::
if (MonitorCount > 8) {
GoSub CalculateDisplacement
WinMove, A, , %xPosOn9%, %yPosOn9%
}
return
CalculateDisplacement:
WinGetPos, xPos, yPos, , , A
Loop, %MonitorCount% {
SysGet, MonitorDimension, Monitor, %A_Index%
if (xPos > MonitorDimensionLeft and xPos < MonitorDimensionRight and yPos < MonitorDimensionBottom and yPos > MonitorDimensionTop) {
currentMonitor = %A_Index%
}
}
SysGet, thisMonitor, Monitor, %currentMonitor%
displaceXpos := xPos + thisMonitorRight - thisMonitorLeft
displaceYpos := yPos + thisMonitorTop - thisMonitorBottom
displaceXneg := xPos - thisMonitorRight + thisMonitorLeft
displaceYneg := yPos - thisMonitorTop + thisMonitorBottom
Loop, %MonitorCount% {
SysGet, nextMonitor, Monitor, %A_Index%
xPosOn%A_Index% := xPos - thisMonitorLeft + nextMonitorLeft
yPosOn%A_Index% := yPos - thisMonitorTop + nextMonitorTop
}
return