Answers:
过去,我为此使用了一个称为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的图书馆,图书馆分布,脚本,工具和资源的组织列表”中点击这里
MaximizeToggle
可以将窗口还原到我想要的不同屏幕。我最终使用了专门用于执行此操作的“ DockWin”(仅此而已)。
Windows程序-现在称为app(lication)-可以将其窗口的位置保存在文件或注册表中。如果知道这些数据在哪里,则可以在记事本或注册表编辑器中对其进行手动编辑。(不正确的注册表项可能会导致Windows不稳定或错误)
对于具有一点编码技能的人来说,创建自动方式应该很容易,并且可以根据需要启动自动方式(即在重新连接显示器之后)。这可以通过操作脚本,.bat文件或本机应用程序来完成。
但是,为了使所需的位置变为可能,需要在此之前关闭有问题的应用程序。
具有“联机”功能(无需重新启动应用程序)的另一种可能性是,如果Windows允许另一个进程访问一个进程的窗口。一种方法可以是SendMessage和WindowProc函数。
(在这一点上,我不确定这是否仅适用于父应用程序的线程,或者也可以通过其他应用程序的线程来完成……当然,这需要在Windows编程方面有丰富的知识)
将指定的消息发送到一个或多个窗口。[...]如果指定的窗口是由调用线程创建的,则该窗口过程将作为子例程立即被调用。如果指定的窗口是由其他线程创建的,则系统切换到该线程并调用适当的窗口过程。
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
应用程序定义的功能,用于处理发送到窗口的消息。[...]
我使用UltraMon(我相信它是开源的),并且在某些情况下,如果配置正确,它可以做到这一点。
首先安装程序UltraMon。然后,当它运行时,假设现在您只插入了一个监视器(与数量无关),创建一个配置文件:
现在连接/断开其他显示器。为此新设置创建一个配置文件。可能因为插入了7个监视器而将其称为“配置文件7”。现在,以您希望的方式保存图标位置。
您可以轻松使用此工具在配置文件之间来回切换。您可以轻松放置桌面快捷方式以在配置文件之间快速切换。
最后,在高级选项中,您可以让UltraMon始终自动为您执行此操作,但这可能需要付费版本(一次性终身费用)。
我在2009年以19.99美元的价格购买了UltraMon,这是完全值得的。
Win Redock最适合我。Redock是自动的-保存和还原窗口而无需任何干预。魔法!它也是开源的!
如果按住Shift键并右键单击任务栏上的图标,然后按Move键,则可以使用箭头键移动窗口,并使用Enter键设置位置。几年前我也遇到过同样的问题。
另一种解决方案是使用DisplayFusion通过“将所有窗口移动到当前监视器”热键将窗口捕捉到最近的监视器(连接的唯一监视器)。
如果您是像我这样的老“键盘手”,则可以执行此操作;-]我很久以前就想到了这一点,因为自90年代初以来我一直是多人游戏,这是一个很长的问题,其中包括不同的用户界面。
对于屏幕外/边界应用程序,我发现的最简单的方法是: