如何移动打开屏幕外的窗口?


272

我有一个双显示器设置,最近我使用了定位设置,并且我的一些单窗口应用程序偏爱保留它们最后关闭的位置,然后在同一位置打开。不幸的是,这现在将它们放置在屏幕的可视区域之外!

是否有某种方法可以将特定窗口强制进入可见区域?


2
在Windows 10中这仍然是一个问题!我有3个监视器,我只使用一个“在这里和那里” ...当我这样做时,然后停止使用它,一些打开的程序默认在其上打开。我必须执行win +向左箭头才能最终将其返回到主监视器。

1
七年后仍然是个问题...
Jack Wasey '17

Answers:


194

对于Windows 7及更高版本的用户:Windows Key+ Shift+ 将所选窗口沿该方向移动到显示器。


2
为此,我有一个带有非标准窗口的应用程序,因此Alt-Space技术不起作用(Windows上的Foxit Reader)。
Bdoserror 2015年

3
还需要注意的是win +左/右/上,它将窗口覆盖活动监视器的一半(在任一侧)或使其最大化。这应该在我发现的所有条件下都有效,并且也是非常有用的键(除非当我尝试按fn +方向键:P时不断按下它们)。

11
这并不在我的Windows 10 Pro的64位无
迈克Pomax“Kamermans

3
@ Mike'Pomax'Kamermans:好笑。这是唯一的,关于我的Windows 10 Pro的64台笔记本电脑移动打开关闭屏幕Emacs窗口工作的事情。
Mike Sherrill'Cat Recall'17

2
哇,真不敢相信我从来不知道这一点。八年后仍有人发现这很有用:)
veryRandomMe

433

我使用这种方法:

  • 使用Alt+ Tab切换到屏幕外的应用程序。
  • Alt+调SPACE出系统菜单(您不会看到它,因为它不在屏幕上)
  • 按下R以选择“恢复”菜单选项,以确保窗口未最大化(如果窗口最大化则无法移动)
  • 再次按Alt+ SPACE,然后M选择“移动”菜单选项。
  • 按箭头键之一开始移动。
  • 现在,只需使用鼠标将窗口放置在所需位置即可。

如果您使用的是非英语版本的Windows,则“ R”和“ M”菜单选项可能会有所不同。


8
非常感谢“ Terje Mikal”为您提供的解决方案,为我省了不少钱。但是鉴于该问题仅是因为Windows 7删除了旧的解决方案(在任务栏上右键单击“应用”按钮)后才发生,因此还有一个更好的解决方案,由“ kmote”于2013年6月18日17:45发布在“ Eththigious”下2010年10月10日08:50:«在Windows 7下,您需要按住SHIFT键并右键单击任务栏按钮»
Michel Merlin 2016年

1
尝试了所有其他步骤,但最终还是用箭头键启动了运动,实际上是...哇。而我这个接近重新安装应用程序!
菲利普(Philip)

1
对于我正在处理的应用程序,“还原”显示为灰色,但是“最大化”确实可以在该阶段中正常运行,因此无需进行任何移动。为赢取最大化!
Brian Bulkowski

我如上所述,但以下组合也对我有用,Alt + Tab,Alt + Space,M,然后按Esc键,这似乎也有效
Mz A

差不多到2020年,仍在处理这个问题。
Mert

14

对于Windows 10,要使用旧的移动带有光标键的窗口,您需要在Shift从任务栏打开上下文菜单时按下该键。

在此处输入图片说明

信息来自How To Geek


3
在当前的Windows 10版本中,您也可以将鼠标悬停在任务栏上并按住一秒钟,这将导致显示窗口的缩略图。右键单击缩略图将提供“旧”上下文菜单,就像按住Shift并单击一样。
编码器

1
@Coderer:评论确实很有帮助,我不知道。我以为他们完全删除了它。
Oak_3260548

我完全忘记了!我认为如果任务栏按钮代表一个窗口,您也可以右击鼠标。如果所讨论的应用程序有多个窗口,则会获得一个不同的上下文菜单。
编码员

12

您可以右键单击任务栏上的程序按钮,然后单击“移动”。现在,您可以使用键盘上的箭头按钮将窗口移到可以看到的位置。需要一些摆弄,有时窗户会“卡在”显示器边缘。您也可以尝试使用鼠标,但是如果您还看不到窗口,则键盘更可靠;-)


2
我不了解键盘,但是如果鼠标不在屏幕上,则无法使用它,我已经尝试过了。
马修·沙利

2
即使箭头键不在屏幕上,您也应该能够使用它们,除非系统上存在一些非标准的东西可以防止这种情况。对于遇到这个问题的人,这一直是我的标准回应。
音乐2

9
同样,在按下至少一个箭头键后,窗口将“附加”到鼠标上,您可以用鼠标移动它(无需单击!)这种一键多鼠标的方法通常比仅使用键快。
Daniel Rikowski

8
在Windows 7下,您需要右键单击任务栏按钮。
kmote

这是唯一对我
有用的

8

回到任务栏之前,我曾通过调Alt+Space出窗口菜单来解决此问题,然后调M出了Move功能。然后,使用箭头键可以将窗口移回屏幕。


请注意,+ 1表示如果将它们最大化到一个屏幕,它们将不会移动,如果窗口不只是简单地“超出限制”而是在虚拟屏幕上,则可能会出现问题。它们可能是用于OP的,因为最大化应该已经覆盖了占用屏幕的整个分辨率。
mckenzm '18年

8

另一种快速的方法是右键单击任务栏,然后选择Cascade Windows。


4
这是一种相当丑陋的方法,因为它会影响我所有打开的窗口(而且我通常也至少打开了一个浏览器,即使没有打开六个浏览器)
Matthew Scharley,2009年

1
是的,这是最快的。您也可以关闭不在屏幕上的窗口,然后使用undo级联还原窗口的位置。我不知道它是否还会将不在屏幕上的窗口的位置恢复到该位置,因为我无法尝试(只有一台显示器)。
T. Kaltnekar,2009年

5

我遇到了这个问题,对我来说绝对没有用。因此,我进入了任务管理器,然后右键单击不在屏幕上的程序。切换到没有用,也没有出现在前面。请注意,这是一个静态窗口,因此无法通过任务栏使用最大化。但是您可以通过任务管理器来最大化它,并将其带到您的主屏幕!从那里,您可以使用窗口执行任何操作。:)


感谢您的回答。右键单击“任务管理器”中的“最大化”是对我唯一有效的方法。
一位编码器

5

编辑:根据评论停产

为了将来快速解决此问题,并在双屏上定位应用程序,我建议使用Winsplit Revolution。通过简单地按Ctrl-Alt和数字键盘将窗口完全放回所需位置,可以减少解决此问题的麻烦。


不幸的是它不是免费的了
Charbel

是的,看起来不错,但我有严格的政策,除非我愿意,否则不付款。就像用于Lastpass或Acronis True Image。根据我的时间表,很有可能可能要超过30天才能再次出现问题,因此试用期对我不起作用。
SDsolar

1
不幸的是,WinSplit Revolution已停产,并且没有新的更新。”替换为“ MaxTo”,目前价格为$ 19美元
TT

1
WinSplit-Revolution免费软件,如果您进行搜索,仍然可以下载。最新版本是2011年发布的11.04。它可在Windows 10中使用。经修改的v9.02源代码在GitHub中以WinSplit-Reloaded的形式提供。这是一个了不起的产品。
Ben

@Ben,感谢您的链接。我转到答案中的链接,并引用了该信息。(现在页面上显示“不再提供WinSplit Revolution,但我们提供了一个很好的选择。”)GitHub fork中的自述文件提供了很多信息,并特别提及“ 9.02版本,于2009年公开发行”。
TT--

3

我使用了一个名为Shove-it的漂亮小工具它只是检查是否有任何窗口在屏幕边缘之外,然后再次将其推回到屏幕上。它是古老的软件(并且主页对此进行了证明),但是可以在所有Windows版本上使用。


链接现在已死:-(
danio

:-(在另一方面,该解决方案,可能已经失去自身是否还曾发生这已经多年自从我上次有需要这一点。?
托本Gundtofte -布鲁恩


安装程序只是为我锁定(在Windows 7上)。
mhenry1384

@ mhenry1384好,它已经有 14年的历史(和32位),我们真的不能期望它能与新的(64位)版本一起使用.....
Torben Gundtofte-Bruun 2015年

3

我只是在基于Tk的Windows 7上使用Git GUI遇到了这个问题,因此在Windows上有时会以奇怪的方式出现故障。我尝试打Alt-Space并使用move命令将其回弹到视野中,但是它似乎卡住了。最大化它会把它带回来,但是如果我把它放回窗口模式,它将再次消失。

我所做的就是将其最大化,抓住标题栏,并将其拖动到屏幕的一侧,以便Aero Snap将其大小调整为屏幕大小的一半,然后将其置于窗口模式。之后,我将其从屏幕侧面拖开,并重新获得了对其的控制。


如此之多的答案被人们高度评价,但没有一个对我有用。做到了。
Dan Nissenbaum

Git GUI也将我带到了这里,但是我通过Shift-RightClick(在任务栏图标上),Move,箭头键,然后是鼠标(将窗口放置在应有的位置)组合解决了这个问题。Emthigious / Brad Patton的解决方案起作用。
mcalex

1

我在winamp上也遇到了同样的问题。到目前为止,我发现的唯一(不令人满意的)解决方案是:将屏幕分辨率更改为其他分辨率

汤玛士


1

您可以使用NIRSOFT WinLister。我注意到当您使用经典主题时,Windows 7上不提供“移动”方法,并且其他各种方法都失败了,因此我发布了“如果其他所有方法都失败”的替代方法。

  1. 此处下载WinLister应用程序。

  2. 以管理员身份运行WinLister,然后选择要移回屏幕的窗口。不以管理员身份运行将无法使应用程序为您移动窗口。

  3. 右键单击并选择“ Center Selected Windows”,就可以完成!

屏幕截图在这里


1
很棒的提示-这是唯一适用于MS TFS电动工具的解决方案,因为Alt-Space仅打开拥有的Windows资源管理器窗口的菜单,而不是关闭不在屏幕上的子窗口。
danio 2013年

1

在某些情况下,尽管远程位置有多个屏幕,但您可能无法从您的位置访问它们。按键命令不起作用,因为您已被锁定在屏幕之外的任何视图之外。

在这种情况下,如果您可以打开应用程序的其他实例,请执行此操作。前几个实例几乎可以肯定会以更多的幻像窗口形式出现在任务栏中。继续做。最终,它们将开始填充主视图。然后使用任务栏图标右键单击并关闭屏幕外的实例。一旦没有打开屏幕外的实例,请在主屏幕上将其关闭。下次打开该应用程序时,它将出现在主屏幕上,而不是“关闭摄像机”。


1
您指的是:“远程位置”,“您的位置”等等?为什么将用户“锁定在屏幕之外的任何视图之外”?
斯科特

他的意思是VM,Citrix,RDP等。您将不会在手机上读取4K分辨率。虚拟屏幕也是如此。一些公司用户将HDMI加密狗插入,以将必需的桌面物品停在看不见的地方。返回1个实际屏幕将它们移回原位。
mckenzm '18年

1

选择窗口(例如,使用Alt+ Tab)。然后按住Alt+ F7并使用箭头键将窗口移回视图。做完了

有时很难盲目地知道隐藏窗口的位置(以及如何将其移向屏幕)。选择窗口期间的动画可能会有所帮助。由于我的设置(我有时会在笔记本电脑屏幕上方使用第二个屏幕),因此屏幕外出现的窗口通常位于下方。因此,按住Alt+ F7+ Up可以看到它们。


1

对于熟悉PowerShell的任何人,请尝试以下操作:

  • 将以下代码复制并粘贴到PowerShell ISE会话中。
  • 打跑
  • 按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/


0

将光标放在任务栏上。右键单击并排选择显示窗口。它将显示该窗口。最后,再次将光标移到任务栏上,单击并排撤消显示窗口。



0

移动窗口与Windows上的快捷方式的底部/顶部显示器通过Tymric

我写了一个AHK脚本。

用法:

Win+ Alt+ Arrow:将活动窗口移至监视器,其方向由箭头指示。请注意,如果尝试在设置中从监视器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

0

我编写了一个名为Borderline的工具,该工具在运行时会自动将屏幕外的窗口移回屏幕上。您必须在需要时运行它(如果您为其分配了键盘快捷键或将其放在开始菜单中,效果最佳),但这也意味着它并不总是在后台运行。


0

有时,这解决了:

  • 点击WinKey+P
  • 选择至Extend或其他选项,所有窗口将级联。将所需的窗口移至主屏幕。

-1

如何移动打开屏幕外的窗口?

暂时降低屏幕分辨率,用鼠标抓住顶部的条并移动中心。等待系统自动恢复分辨率。

  1. 桌面->屏幕分辨率
  2. 选择您的显示器,从当前设置更改为较低的分辨率。
  3. 系统显示新分辨率,询问您是否要保留或恢复30秒。
  4. 在30秒内,抓住未找到的窗口并将其移到中心。
  5. 等待超时以自动还原。

窗移了...

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.