重新连接外接显示器时,如何将窗口恢复到原始屏幕?


17

想象你这样做...

  1. 连接外接显示器。
  2. 启动一些应用程序,在每个监视器上启动一些应用程序。
  3. 断开外接显示器的连接。
    • 很好,因为所有应用程序都移动了主显示器。
  4. 重新连接外接显示器。
    • 这些应用程序保留在主监视器上,但是如果它们移回以前使用的外部监视器,那就太好了。

使用Windows10。是否有任何解决方案或解决方法来将应用程序自动移回外部监视器?


6
你可能想看看这里- - superuser.com/q/240362/302907
Anaksunaman

Answers:


1

过去,我为此使用了一个称为Windowpad的Autohotkey工具。显然,现在它已被称为WindowPadX的增强的新版本替代。向下滚动以查看自述文件。完整的文档在这里

这对我在多台显示器上至关重要。我喜欢能够轻松地在两者之间切换窗口。

您可以为以下内容(从自述文件)设置热键:

要在热键上配置的可能操作

窗口动作

多显示器

WPXA_MoveWindowToMonitor:在屏幕之间移动窗口,保留相对位置和大小。

WPXA_MinimizeWindowsOnMonitor:最小化给定屏幕上的所有窗口

WPXA_GatherWindowsOnMonitor:在特定屏幕上“收集”窗口。

WPXA_FillVirtualScreen:扩展窗口以填充虚拟屏幕(所有监视器)。

一般

WPXA_MaximizeToggle:最大化或还原窗口。

WPXA_TopToggle:切换给定窗口的“ AlwaysOnTop”

WPXA_RollToggle:切换给定窗口的“滚动/展开” WPXA_Move:基于“填充”概念移动和调整窗口大小。

WPXA_TileLast2Windows:平铺活动窗口和最后一个窗口

多显示器鼠标动作

WPXA_MoveMouseToMonitor:将鼠标移动到给定监视器的中心

WPXA_ClipCursorToCurrentMonitorToggle:将鼠标剪切到当前监视器

WPXA_ClipCursorToMonitor:将鼠标剪辑(限制)到给定的监视器

一般鼠标动作

WPXA_MouseLocator:轻松找到鼠标

你可以找到它和其他工具“真棒AutoHotkey的图书馆,图书馆分布,脚本,工具和资源的组织列表”中点击这里


此功能列表表明它可以移动窗口,但是可以其位置恢复到特定状态吗?“聚集”和“基于填充板概念的滚动/展开”是什么意思?
TT--

@ TT--“ Gather”将所有窗口收集到当前显示中。例如,当我希望在一个显示器上除一个或几个窗口外的所有窗口,以及我要聚焦在主显示器上的窗口时,此功能非常好。“ WPXA_MaximizeToggle:最大化或还原窗口”应在最大化和原始之间切换。“滚动/展开...”隐藏窗口的工作区域,仅显示标题栏,或从卷起状态恢复到整个窗口。其中一些来自内存,我可能并不完全正确,但是如果不是的话,那是非常接近的。
ludinom '18

1
感谢您提供更多详细信息。听起来好像MaximizeToggle可以将窗口还原到我想要的不同屏幕。我最终使用了专门用于执行此操作的“ DockWin”(仅此而已)。
TT--

0

一些GPU对此提供了支持,例如Nvidia控制面板,该面板使您可以为此应用设置以及许多其他功能。

或者,您可以设置多个显示设置以在所有显示器上镜像桌面(而不是扩展),如果适用的话。


0

Windows程序-现在称为app(lication)-可以将其窗口的位置保存在文件或注册表中。如果知道这些数据在哪里,则可以在记事本或注册表编辑器中对其进行手动编辑。(不正确的注册表项可能会导致Windows不稳定或错误)

对于具有一点编码技能的人来说,创建自动方式应该很容易,并且可以根据需要启动自动方式(即在重新连接显示器之后)。这可以通过操作脚本,.bat文件或本机应用程序来完成。

但是,为了使所需的位置变为可能,需要在此之前关闭有问题的应用程序。

具有“联机”功能(无需重新启动应用程序)的另一种可能性是,如果Windows允许另一个进程访问一个进程的窗口。一种方法可以是SendMessage和WindowProc函数。

(在这一点上,我不确定这是否仅适用于父应用程序的线程,或者也可以通过其他应用程序的线程来完成……当然,这需要在Windows编程方面有丰富的知识)

https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms644950%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

将指定的消息发送到一个或多个窗口。[...]如果指定的窗口是由调用线程创建的,则该窗口过程将作为子例程立即被调用。如果指定的窗口是由其他线程创建的,则系统切换到该线程并调用适当的窗口过程。

WM_Move消息 https://docs.microsoft.com/zh-cn/windows/desktop/winmsg/wm-move

在移动窗口后发送。

窗口通过其WindowProc函数接收此消息。

https://msdn.microsoft.com/zh-cn/library/ms633573%28v=VS.85%29.aspx?f=255&MSPPError=-2147217396

应用程序定义的功能,用于处理发送到窗口的消息。[...]


0

我使用UltraMon(我相信它是开源的),并且在某些情况下,如果配置正确,它可以做到这一点。

首先安装程序UltraMon。然后,当它运行时,假设现在您只插入了一个监视器(与数量无关),创建一个配置文件:

  • 右键单击系统托盘中的图标
  • 左键单击显示配置文件
  • 左键单击新的显示配置文件,为其命名(例如,我要做的是给它一个数字,以反映您正在使用多少台显示器,例如配置文件1)。
  • 现在你有一个。太酷了,您可以为每个监视器,屏保等创建墙纸。按照您想要的方式获取所有图标。
  • 右键单击系统托盘图标。
  • 左键单击桌面图标左保存位置

现在连接/断开其他显示器。为此新设置创建一个配置文件。可能因为插入了7个监视器而将其称为“配置文件7”。现在,以您希望的方式保存图标位置。

您可以轻松使用此工具在配置文件之间来回切换。您可以轻松放置桌面快捷方式以在配置文件之间快速切换。

最后,在高级选项中,您可以让UltraMon始终自动为您执行此操作,但这可能需要付费版本(一次性终身费用)。

我在2009年以19.99美元的价格购买了UltraMon,这是完全值得的。


3
您能否详细说明“如何”,它的工作环境以及如何正确配置它?
fixer1234 '18

是的,先生/妈妈。首先安装程序UltraMon。www.ultramon.com然后,当它运行时,假设现在您只插入了1个监视器(与数量无关),创建了一个配置文件:右键单击系统托盘中的图标左键单击显示配置文件左键单击新的显示配置文件用您正在使用的监视器数来命名它(这就是我的工作),例如Profile1。现在您有了一个。太酷了,您可以为每个监视器,屏幕保护程序等创建墙纸。按照您想要的方式获取所有图标。右键单击系统托盘图标。左键单击桌面图标左保存位置
PyTis

继续,现在连接/断开其他显示器。为此新设置创建一个配置文件。可能因为插入了7个监视器而将其称为“配置文件7”。现在,以您希望的方式保存图标位置。您可以轻松使用此工具在配置文件之间来回切换。您可以轻松放置桌面快捷方式以在配置文件之间快速切换。最后,在高级选项中,您可以让UltraMon始终自动为您执行此操作,但这可能是有偿(一次性终身费用)选项。我在2009年以19.99美元的价格购买了UltraMon,这是完全值得的。
PyTis

这似乎并不能回答这个问题-问题是关于将应用程序窗口还原到每个监视器,这解决了桌面图标(及相关内容)。听起来像是一种有用的工具,但不是相关工具。
Bobson


-1

如果按住Shift键并右键单击任务栏上的图标,然后按Move键,则可以使用箭头键移动窗口,并使用Enter键设置位置。几年前我也遇到过同样的问题。

另一种解决方案是使用DisplayFusion通过“将所有窗口移动到当前监视器”热键将窗口捕捉到最近的监视器(连接的唯一监视器)。


1
为什么这么复杂?如果您只是想移至另一台显示器,则只需使用Windows + Shift +左/右
phuclv

-1

尚无任何解决方案,必须使用键盘上带有向左和向右箭头的Windows键在屏幕之间移动,或使用Windows键+ Shift +向左/向右移动到屏幕的各个部分。

Windows键+ P在多监视器情况下也有助于镜像/扩展等。

但是同样,一旦断开屏幕连接,如果这些窗口上有任何元数据,它们便会消失。


实际上,有多种解决方案。您提到的一两个。改变分辨率是另一个。
Hennes

-2

如果您是像我这样的老“键盘手”,则可以执行此操作;-]我很久以前就想到了这一点,因为自90年代初以来我一直是多人游戏,这是一个很长的问题,其中包括不同的用户界面。

对于屏幕外/边界应用程序,我发现的最简单的方法是:

  • 只需通过任务栏或Alt- 选择应用Tab
  • 按住Alt键,然后按空格键(Alt- Spacebar
  • 您会在主屏幕上看到一个菜单,其中一个选项为“移动”,并带有下划线M。
  • 这样,在菜单仍然显示时,按“ M”键
  • 此时,请勿指向/单击/等,因为您现在正在“重新定位”活动窗口(屏幕外的窗口)。
  • 您可以在周围拖动鼠标(现在不需按按钮),您应该会看到该应用程序进入/退出主屏幕,足以将其放置在更方便使用的位置。
  • 另外,您可以使用箭头键来移动应用程序,效果不错,但速度稍慢一些,以确定窗口在哪里以及前进的方向。
  • 将窗口放在“合适的位置”后,可以在其中主动调整大小/移动窗口,请单击主鼠标按钮,或者使用键盘方法,请按“输入”键。
  • 窗口/应用程序现在应该很容易移动/调整。
  • 对屏幕外的所有Windows /应用重复此操作。

3
(1)您的回答似乎暗示OP不知道如何移动窗户,这既侮辱又幼稚。问题的全部要点是让计算机记住哪个窗口位于哪个显示器上,并使计算机自动恢复它们,而用户无需记住它们在哪里,然后一次手动将它们移回。(2)除了Alt + Space键盘快捷键之外,您的答案与hydraxx答案的第一段基本上相同。…(续)
斯科特

(续)…(3)为什么您认为“最简单”的方法是使用键盘进入“移动模式”,然后使用鼠标进行移动?正如hydraxx所说,您可以完全使用键盘来完成。或者,您也可以通过单击窗口标题并拖动鼠标来完全完成此操作。您提出了最复杂的解决方案。
斯科特(Scott)

它实际上非常简单,描述有些棘手。尝试任务栏的东西时,无论是过时的东西,还是系统上的某些东西阻止查看它,我都没有得到“移动”菜单项。我同意,除了alt-spc之外,我的答案基本相同,但是我已经向数十个人展示了我的方法,而且始终遵循“哇,那很简单,想知道为什么不尝试这样做” 。如前所述,我的回答的确允许仅使用keybd的解决方案。也有一些实用程序,但是有时shell扩展会产生不想要的效果……
PeteG

我同意,尽管如此,我们或多或少会在操作系统中使用相同的结构到达同一个地方。
PeteG

您也可以使用DisplayFusion执行此操作。它具有将“当前任务/窗口”“捕捉”到当前(可能是主)监视器的设置。
PeteG
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.