是否可以通过某种方法将特定窗口强制进入可视区域?
#1 楼
对于Windows 7和更高版本的用户: + Shift +←或→会将所选窗口沿该方向移动到监视器。评论
为此,我有一个带有非标准窗口的应用程序,因此Alt-Space技术不起作用(Windows上的Foxit Reader)。
–Bdoserror
2015年11月5日在18:38
还需要注意的是win +左/右/上,它将窗口覆盖活动监视器的一半(在任一侧)或使其最大化。这应该在我发现的所有条件下都有效,并且也是非常有用的键(除非当我尝试按fn +箭头键:P时不断按下它们)。
–凯特
17年1月30日在16:42
这在我的Windows 10 Pro x64中没有任何作用
– Mike'Pomax'Kamermans
17年5月25日在1:00
@ Mike'Pomax'Kamermans:好笑。这是在Windows 10 Pro x64笔记本电脑上移动移动在屏幕外打开的Emacs窗口的唯一方法。
– Mike Sherrill的“猫召回”
17年7月13日在11:15
哇,真不敢相信我从来不知道这一点。八年后仍然有人觉得这很有用:)
–veryRandomMe
17年10月4日在1:58
#2 楼
我使用这种方法:使用Alt + Tab切换到屏幕外应用程序。
按Alt + SPACE弹出系统菜单(您不会看到
,因为它不在屏幕上)
按R选择“还原”菜单选项,以确保窗口未最大化(如果窗口最大化则无法移动)
再次按Alt + SPACE,然后M选择“移动”菜单选项。
按箭头键之一开始移动。
现在只需使用鼠标将窗口放置在所需位置即可。
如果您使用的是非英语版本的Windows,则“ R”和“ M”菜单选项可能会有所不同。
评论
非常感谢“ Terje Mikal”为您提供的解决方案,为我省了不少钱。但是鉴于该问题仅在Windows 7删除了旧的解决方案(在任务栏上右键单击应用程序按钮)后才发生,因此还有一个更好的解决方案,由“ kmote”于2013年6月18日17:45发布在“ Eththigious”下2010年10月10日08:50:«在Windows 7下,您需要按住SHIFT键并右键单击任务栏按钮»
–米歇尔·梅林(Michel Merlin)
16 Dec 10'在8:25
尝试了其他所有步骤,但是最终还是用箭头键启动了运动,确实如此……哇。我已经快要重新安装该应用程序了!
– Philip Guin
17年1月12日在17:56
对于我正在处理的应用程序,“还原”显示为灰色,但是“最大化”确实可以在该阶段中正常工作,因此无需进行任何移动。为赢取最大化!
–布赖恩·博尔科斯基(Brian Bulkowski)
18-3-21在22:47
我按照上面的方法操作,但以下组合也适用于我:Alt + Tab,Alt + Space,M,然后按Esc键,这似乎也有效
– Mz A
19-2-28在6:58
差不多到2020年,仍在处理这个问题。
–专家
19年8月8日在9:27
#3 楼
对于Windows 10,为了使用旧的移动带有光标键的窗口,您需要在从任务栏打开上下文菜单时按下Shift键。来自“如何怪胎”的信息
评论
在当前的Windows 10版本中,您也可以将鼠标悬停在任务栏上并按住一秒钟,这将导致显示窗口的缩略图。右键单击缩略图将提供“旧”上下文菜单,就像按住Shift并单击一样。
–编码器
18年8月13日在7:31
@Coderer:评论确实很有帮助,我不知道。我以为他们完全删除了它。
–Oak_3260548
19年8月29日在12:12
我完全忘记了!我认为如果任务栏按钮代表一个窗口,您也可以右击鼠标。如果所讨论的应用程序有多个窗口,则将获得一个不同的上下文菜单。
–编码器
19年8月29日在12:22
#4 楼
您可以右键单击任务栏上的程序按钮,然后单击“移动”。现在,您可以使用键盘上的箭头按钮将窗口移动到可以看到它的位置。需要一些摆弄,有时窗户会“卡在”显示器的边缘。您也可以尝试使用鼠标,但是如果您还看不到窗口,则键盘会更可靠;-)评论
我不了解键盘,但是如果它们不在屏幕上,则无法使用鼠标,我已经尝试过了。
–马修·沙利(Matthew Scharley)
09-10-10在8:54
即使箭头键不在屏幕上,您也应该能够使用它们,除非系统上有一些非标准的东西可以防止这种情况。对于遇到这个问题的人,这一直是我的标准回应。
–music2myear
2011年4月22日在19:13
同样,在按下至少一个箭头键后,窗口将“附加”到鼠标上,您可以用鼠标移动它(无需单击!)这种一键鼠标的方法通常比仅使用键快。
–丹尼尔·里科夫斯基(Daniel Rikowski)
2013年6月4日15:52
在Windows 7下,您需要右键单击任务栏按钮。
– kmote
13年6月18日在17:45
这是唯一对我有用的解决方案...
–sebagomez
16年8月27日在21:13
#5 楼
回到任务栏之前,我曾经使用Alt + Space来解决此问题,以显示窗口菜单,然后使用M来表示Move功能。然后,使用箭头键可以将窗口移回屏幕。评论
请注意,+ 1表示如果将它们最大化到一个屏幕,它们将不会移动,如果窗口不只是简单地“超出限制”而是位于虚拟屏幕上,则可能会出现问题。它们可能是用于OP的,因为最大化应该已经覆盖了占用屏幕的整个分辨率。
–mckenzm
18年4月3日在1:30
#6 楼
另一种快速的方法是右键单击任务栏,然后选择Cascade Windows。评论
这是一种相当丑陋的方式,因为它会影响我所有打开的窗口(而且我通常也至少打开了一个浏览器,即使没有打开六个浏览器也是如此)
–马修·沙利(Matthew Scharley)
09年10月10日在9:22
是的,这是最快的。您也可以关闭不在屏幕上的窗口,然后使用撤消级联操作恢复窗口的位置。我不知道它是否还会将不在屏幕上的窗口的位置恢复到该位置,因为我无法尝试(只有一台显示器)。
– T. Kaltnekar
09-10-10在10:22
#7 楼
我遇到了这个问题,对我来说绝对没有任何效果。因此,我进入了任务管理器,然后右键单击不在屏幕上的程序。切换到没有用,也没有出现在前面。请注意,这是一个静态窗口,因此无法通过任务栏使用最大化。但是您可以通过任务管理器来最大化它,并将其带到您的主屏幕!从那里,您可以使用窗口执行任何操作。 :)评论
感谢您的回答。右键单击“任务管理器”中的“最大化”对我来说是唯一有效的方法。
–编码员
2015年12月16日下午0:48
#8 楼
编辑:根据评论停产。要在将来快速解决此问题,并在双屏上定位应用程序,我可以推荐Winsplit Revolution。通过简单地按Ctrl-Alt和数字键盘将窗口完全放回所需位置,可以减少解决此问题的可能性。
评论
不幸的是,它不再免费了
– Charbel
2014年9月15日下午16:35
是的,看起来不错,但我有严格的政策,除非我愿意,否则不付款。就像用于Lastpass或Acronis True Image。根据我的时间表,很有可能可能要超过30天才能再次出现问题,因此试用期对我不起作用。
– SDsolar
17年5月4日在19:21
不幸的是,WinSplit Revolution已停产,并且没有新的更新。”替换为“ MaxTo”,目前价格为19美元
–TT--
18-10-2在13:54
WinSplit-Revolution是免费软件,如果您搜索它,仍然可以下载。最新版本是2011年发布的11.04。它可在Windows 10中使用。经修改的v9.02源代码在GitHub中以WinSplit-Reloaded的形式提供。这是一个了不起的产品。
–本
19 Jun 10'在15:07
@Ben,感谢您的链接。我转到答案中的链接,并引用了该信息。 (现在页面上显示“不再提供WinSplit Revolution,但我们提供了一个很好的替代方法。”)GitHub分支中的自述文件提供了很多信息,并特别提及“ 9.02版本,于2009年公开发行”。
–TT--
19年7月11日在22:06
#9 楼
我使用了一个名为Shove-it的漂亮小工具,它只是检查是否有任何窗口在屏幕边缘之外,然后再次将其推回到屏幕上。它是古老的软件(并且主页对此进行了证明),但是可以在所有Windows版本上使用。评论
链接现在已死:-(
– danio
2013年9月23日上午10:48
:-(另一方面,此解决方案可能已经过期。它是否还会发生?自从我上次需要此方法已经有好几年了。
– Torben Gundtofte-Bruun
2013年9月27日在7:51
web.archive.org/web/20090228082939/http://www.phord.com/…
–n611x007
15年1月8日在10:19
安装程序只是为我锁定(在Windows 7上)。
–mhenry1384
2015年3月30日,2:21
@ mhenry1384好,它已经有14年的历史(和32位),我们真的不能期望它可以与新的(64位?)版本一起使用.....
– Torben Gundtofte-Bruun
2015年4月1日在11:14
#10 楼
我只是在基于Tk的Windows 7上使用Git GUI遇到了这个问题,因此在Windows上有时会以奇怪的方式出现故障。我尝试打Alt-Space并使用move命令将其回弹到视野中,但它似乎卡住了。最大化它会把它带回来,但是如果我把它放回窗口模式,它会再次消失。我所做的就是最大化它,抓住标题栏,并将其拖到屏幕的一侧。因此Aero Snap会将其尺寸调整为屏幕尺寸的一半,并使其进入窗口模式。之后,我将其从屏幕的一侧拖开,并重新获得了对其的控制。
评论
如此众多的答案受到了更高的评价,但没有一个对我有用。做到了。
–丹·尼森鲍姆(Dan Nissenbaum)
17年2月4日在17:07
Git GUI也将我带到了这里,但是我通过Shift-RightClick(在任务栏图标上),Move,箭头键,然后是鼠标(将窗口放置在应有的位置)组合解决了这个问题。 Emthigious / Brad Patton的解决方案起作用。
– mcalex
17年7月3日在3:59
#11 楼
我在winamp上也遇到了同样的问题。到目前为止,我发现的唯一(令人不满意的)解决方案是:将屏幕分辨率更改为其他分辨率并返回Thomas
#12 楼
您可以使用NIRSOFT WinLister。当您使用经典主题时,我注意到Windows 7上不提供“移动”方法,并且其他各种方法都失败了,所以我发布了“如果其他所有方法都失败”的替代方法。
在此处下载WinLister应用程序。
以管理员身份运行WinLister,然后选择要移回屏幕的窗口。
不以管理员身份运行不会显示应用程序即可为您移动窗口。
右键单击并选择“居中选中的窗口”,即可完成操作。
此处的屏幕截图。
评论
很棒的提示-这是唯一适用于MS TFS电动工具的解决方案,因为Alt-Space仅打开拥有的Windows资源管理器窗口的菜单,而不是关闭不在屏幕上的子窗口。
– danio
2013年9月23日上午10:48
#13 楼
在某些情况下,尽管远程位置有多个屏幕,但您可能无法从您的位置访问它们。按键命令不起作用,因为您已被锁定在屏幕之外的任何视图之外。在这种情况下,如果可以打开应用程序的其他实例,请执行此操作。前几个实例几乎肯定会以更多的幻像窗口形式出现在任务栏中。继续做。最终,它们将开始填充主视图。然后使用任务栏图标右键单击并关闭屏幕外的实例。一旦没有打开屏幕外的实例,请在主屏幕上将其关闭。下次打开该应用程序时,它将出现在主屏幕上,而不是“关闭相机”。评论
您指的是“远程位置”,“您的位置”等等?为什么将用户“锁定在屏幕之外的任何视图之外”?
–斯科特
16-10-22在1:26
他指的是VM,Citrix,RDP等。您将不会在手机上读取4K分辨率。虚拟屏幕也是如此。一些公司用户将HDMI加密狗插入,以将必需的桌面物品停在视线之外。返回1个实际屏幕将它们移回原位。
–mckenzm
18年4月3日在1:35
#14 楼
选择窗口(例如,使用Alt + Tab)。然后按住Alt + F7,然后使用箭头键将窗口移回视图。完成。有时很难盲目知道隐藏窗口的位置(以及如何将其移向屏幕)。选择窗口期间的动画可能会有所帮助。由于我的设置(我有时会在笔记本电脑屏幕上方使用第二个屏幕),因此屏幕外出现的窗口通常位于下方。因此,按住Alt + F7 + Up可以看到它们。
#15 楼
对于熟悉PowerShell的任何人,请尝试以下操作:将以下代码复制并粘贴到PowerShell ISE会话中。
运行Run
按ALT + TAB /使屏幕外窗口处于活动状态
稍等片刻(在脚本上按RUN键5秒钟)
现在应显示该窗口。
如果该窗口是主窗口,它将被移到屏幕的左上角。
如果窗口是另一个程序的子窗口,则其左上角将与其父窗口的左上角对齐。
Add-Type @"
using System;
using System.Runtime.InteropServices;
// https://msdn.microsoft.com/en-us/library/windows/desktop/dd162897(v=vs.85).aspx
public struct RECT
{
public long left;
public long top;
public long right;
public long bottom;
}
public class User32WinApi
{
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx
/*
Gets the handle of the in-focus window
NB: In some scenarios this can be NULL; so code needed to handle such an event
*/
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx
/*
top & left are always 0 (i.e. since the rectangle is relative to the window itself)
bottom & right equal the windows hieght and width, respectively.
*/
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
}
"@
$repaint = $true
$windowSize = New-Object RECT
"Quick; get the window you're after in focus; you have 5 seconds..."
Start-Sleep -Seconds 5 #allow 5 seconds for the user to get the window they're after in focus (e.g. using ALT+TAB / whatever)
$activeWindow = [User32WinApi]::GetForegroundWindow()
if ($activeWindow) {
if([User32WinApi]::GetClientRect($activeWindow, [ref]$windowSize)) {
if ([User32WinApi]::MoveWindow($activeWindow, 0, 0, $windowSize.right, $windowSize.bottom, $repaint)) {
"Window moved successfully (hope you agree!)"
} else {
Write-Warning "Failed to move the active window"
}
} else {
Write-Warning "Failed to get size of the active window"
}
} else {
Write-Warning "No active window found"
}
此处的原始代码:https://gist.githubusercontent.com/JohnLBevan/1593bbb860c2d2af436a1c9414e8adfa/
#16 楼
将光标放在任务栏上。右键单击并排选择显示窗口。它将使窗口显示在屏幕上。最后再次将光标移到任务栏上,右键单击并选择撤消显示窗口并排。#17 楼
您还可以使用UltraMon(非免费的Windows,GUI)来设置键盘快捷键,以将窗口移至下一个或上一个监视器。#18 楼
Tymric从“在Windows上使用快捷键将窗口移至底部/顶部监视器的窗口”中:我编写了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
#19 楼
我编写了一个名为Borderline的工具,该工具在运行时会自动将屏幕外的窗口移回屏幕上。您必须在需要时运行它(如果为它分配键盘快捷键或将其放在开始菜单中,效果最佳),但这也意味着它并不总是在后台运行。#20 楼
有时,此问题可以解决:单击WinKey + P
选择
Extend
或其他选项,所有窗口都将级联。将所需的窗口移至主屏幕。#21 楼
暂时降低屏幕分辨率,用鼠标抓住顶部栏并移动中心。等待系统自动恢复分辨率。
DeskTop->屏幕分辨率
选择显示器,从当前设置更改为较低的分辨率。
系统显示新的分辨率,并询问您是否要在30秒内保留或恢复。
在30秒内,抓住未找到的窗口并将其移到中心。
等待超时以自动恢复。
窗口已移动...
评论
在Windows 10中这仍然是一个问题!我有3个监视器,我只使用一个“在这里和那里” ...当我这样做时,然后停止使用它,一些打开的程序默认在其上打开。我必须执行win +向左箭头才能最终将其返回到主监视器。七年后仍然是一个问题...
可能重复的superuser.com/questions/1206086/…
winlister是最好的。.我之前尝试过其他技巧,但是这个技巧一直都有效。.alt-space等仅在某些Windows上有效。