我该怎么办才能检索出屏幕外的窗口?


67

我在机器上遇到一个奇怪的问题,有时在初始化窗口时,它会从屏幕上射出并且看不见。我无法单击它以将其拖回视线。

Windows XP中对此有任何程序或修复程序吗?

我知道Windows和其他程序喜欢在它们关闭后保存窗口位置,因此当您重新打开它们时,它们就位于它们被关闭的位置,而我看不到这些窗口中的任何一个都被关闭了。


8
可能需要注意的是,答案中的ALT + SPACE,M和右键单击任务栏上的技巧同样适用于大多数UNIX类系统的窗口管理器,这使它成为一个相对通用的技巧。此外,如果您在UNIX系统上什至只有很小一部分窗口,通常可以在其上按ALT + CLICK来拖动它。我知道这是Windows特有的问题,这就是为什么我不将其作为完整的答案,但是它可能会对来自Google的人有所帮助。
Michael Trausch

您最近是否连接了第二台显示器?还是投影仪?当您添加第二台监视器设备并
拉长

当被问及3个月前,因此,“又见”:superuser.com/questions/239891/...
克里斯托弗贾沛年

Answers:


101

在任务栏中突出显示,然后按ALT+,SPACE然后按M。这将使它为移动做好准备。然后使用箭头键将其移动,并在完成后按Enter。

尝试Shift在关闭时按住钥匙。这通常可以节省位置。


4
另外,右键单击任务栏中的程序项,选择“移动”,然后在不再次移动鼠标的情况下,适当地按向右,向左,向上或向下箭头键,直到看到该窗口。
music2myear11年

谢谢!这工作得很好。超时到期后将标记为答案。
qroberts 2011年

1
@qroberts我不确定为什么它不是通用的,但是Shift技巧对某些程序很好用,如果不保存则保存位置。感谢您对其进行标记。我很感激。
KCotreau

18
按下Alt + space键后,然后使用箭头按钮之一将其稍微移动一下,然后也可以简单地移动鼠标,窗口将跳到鼠标光标下方。
本·理查兹

1
@qroberts @KCotreau:仅当程序要求CreateWindowEx(或在.Net中FormStartLocation)使用默认的起始位置时,移位技巧才起作用。有很多程序(也许还有框架?)都没有使用默认位置,这是有正当理由的,或者是因为开发人员忘记/犯了一个错误/不知道更好的东西(这不是您通常会遇到的错误)通知...)
BlueRaja-Danny Pflughoeft

18

我有一个令人讨厌的解决方案:-) Python中的脚本,该脚本遍历所有屏幕外窗口并将其移至左上角:

import winxpgui, sys, win32con

screen_width = 1920
screen_height = 1200

def WindowsListEnum(hwnd, data):
    pos = winxpgui.GetWindowRect(hwnd)
    left, top = 0, 0
    if pos[0] < 0 or pos[0] > screen_width:
        left = 10
    if pos[1] < 0 or pos[1] > screen_height:
        top = 10
    if left or top:
        print winxpgui.GetWindowText(hwnd), ',', pos, '->', (top, left, pos[2], pos[3])
        if sys.stdin.read(1) == 'y':
            winxpgui.SetWindowPos(hwnd, win32con.HWND_NOTOPMOST, left, top, pos[2]-pos[0], pos[3]-pos[1], win32con.SWP_SHOWWINDOW)

print "press 'y' to move the window, anything else to continue\n"
winxpgui.EnumWindows(WindowsListEnum, None)

您需要PythonWin32all


4
是的,您可以下载并安装内容(3-5分钟),或者可以使用快捷键(3-5秒)...
TFM

2
我通常也使用该快捷方式,但有时它不起作用,或者我需要立即移动更多Windows。
卢卡斯·塞诺夫斯基

3
完全矫kill过正,但我​​喜欢
Gary

6
+1。如果窗口完全不在屏幕上且方向未知(或离屏幕很远),这将很有用。
彼得·莫滕森

@Peter:在这种情况下,您可以使用alt-space后跟x,以最大化窗口
Rabarberski

14

在Windows 7中,您可以选择窗口,然后选择Win+箭头键将其移动。


3
请注意,该问题是关于Windows XP的,但这是Windows 7的一个绝妙技巧,我有时会自己使用。
nhinkle

9

您也可以右键单击任务栏,然后选择一个排列窗口的菜单选项。在Windows 7中,它们是:

  • 级联Windows
  • 显示堆叠的Windows
  • 并排显示Windows

以前的版本使用的术语略有不同,但是却做同样的事情。如果我没记错的话,某些版本只会安排最小化的Windows /应用程序。


在此处输入图片说明


此方法还会影响所有其他可见窗口。
Synetech

这是真的@Synetech但是当你绝望在演示过程中要回一个屏幕外的窗口,你不介意凌乱...
伊什特万Zachar

6
  1. 通过单击任务栏或ALT+ 将焦点设置到窗口TAB

  2. ALT+调SPACE出系统菜单。

  3. M 选择移动。

  4. 点击一次箭头键开始移动窗口。

  5. 移动鼠标。

该窗口将快速弹出以供查看。

这比使用箭头在整个窗口中移动窗口要快,尤其是如果它离屏幕很远。


您不需要两个轴。任何箭头键都可以。
Synetech

@Synetechinc:我刚刚确认是在Windows 7中。你是对的。我很早以前就了解了此序列,因此在Windows / NT的早期版本中可能需要此序列。如果有人知道该信息,我将更新我的答案。
杰伊·巴祖兹

嗯,这似乎很奇怪,我无法想象为什么同时需要两者。我知道任何箭头键至少足以返回Win95。也许您只是按了两个键,然后以为是这样做的,例如在游戏中按一堆键来做某事,而又不知道哪个人在做the俩,所以您每次都重复一遍。:-)
Synetech

5

另一个提示:使用键盘(一个像素)开始移动后,只需移动鼠标即可完成操作。那快很多。


2

StevenV 指出的@qrobers

右键单击任务栏窗口按钮,并告诉它

  • 级联窗口(将窗口堆叠在一起并显示Windows标头)
  • 垂直平铺窗口(尽最大可能将所有打开的窗口重新放置在桌面上)
  • 水平平铺窗口(尽最大可能将所有打开的窗口重新放置在桌面上)

到目前为止,这是最简单的。断电时,我将其用于笔记本电脑上的多显示器设置中,并且松开了第二个显示器。我可以将所有窗户拉到我的主显示器(笔记本电脑)上。非常简单,快捷。


此方法还会影响所有其他可见窗口。
Synetech

0

某些应用程序不响应使用alt + space + m激活窗口,例如FSCapture(快速石屏幕捕获)。WindowSpace(免费试用版)致力于将其移回屏幕。


0

经常起作用的技术是这样的:

  • 右键单击任务栏,然后选择“显示桌面”
  • 右键单击问题程序任务,然后选择“还原”
  • 右键单击其他程序的任务,然后选择“还原”
  • 右键单击任务栏,然后选择“级联Windows”

通常,这会使窗口参数适合当前屏幕。只有两个活动窗口可以使大多数窗口位置保持不变。


0

有一个(或曾经有)一个非常好的程序,名为Windows Shove-It。曾经在www.phord.com上,但现在已被删除。基本上,只要运行它,它就会自动检测所有已打开的窗口,其内容甚至部分不在屏幕上,然后将它们“推”回查看门户区域,或者在必要时自动调整它们的大小。我设法找到了一个免费的旧Beta版,它将通过Sugarsync分享。https://www.sugarsync.com/pf/D290041_6932435_98576


3
仅供参考,大多数用户对从互联网上下载随机zip文件(甚至有背景)都持怀疑态度。
2013年

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.