![如何在外部显示器断开-重新连接循环期间保持打开的窗口?](https://linux22.com/image/1585658/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%A4%96%E9%83%A8%E6%98%BE%E7%A4%BA%E5%99%A8%E6%96%AD%E5%BC%80-%E9%87%8D%E6%96%B0%E8%BF%9E%E6%8E%A5%E5%BE%AA%E7%8E%AF%E6%9C%9F%E9%97%B4%E4%BF%9D%E6%8C%81%E6%89%93%E5%BC%80%E7%9A%84%E7%AA%97%E5%8F%A3%EF%BC%9F.png)
我正在使用扩展模式下的外接显示器(投影仪)。断开连接并重新连接后,所有窗口都显示在主显示器上,而扩展显示器为空。我想在断开连接-重新连接循环期间将所有窗口保留在外接显示器上。
背景:我正在做演示,投影仪输入通过 HDMI 开关,这样我就可以在投影仪上显示另一个画面。当我离开 PC 时,Windows 会将其视为显示器断开连接并重新排列我的窗口。当我切换回 PC 时,我的演示消失了,我需要移动窗口才能回到原来的位置。这听起来像是一个常见问题,但到目前为止,我还没有看到任何适合我的解决方案。
我查看了各种相关问题,大部分与显示器进入睡眠状态后重新排列窗口有关(不同的问题,相同的根本原因),但我无法找到适合我的解决方案。以下是我正在考虑的所有选项,理想情况下,有人会分享一个肯定有效的解决方案,但如果没有,从以下选项中排除一些选项仍然会有所帮助。
1)禁用 Windows 中的自动显示检测。
A)我读到的一种方法是将 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TMM 中的 UselViewHelper 设置为 0,这是这里建议的: https://www.reddit.com/r/Amd/comments/5jlk82/how_to_prevent_windows_from_rearranging_when/ 但对我来说没用。我试过了,重启后,电脑的行为和以前一样。
b)我读到过一篇文章,说只要电缆还插着,Windows 就不会自动检测从 VGA 端口拔下的显示器。这听起来不太有说服力,因为使用 VGA 假棒是没有意义的,但我会尝试一下。我已经订购了一个 VGA 到 HDMI 转换器,因为我没有 VGA 端口。
2)模拟外接显示器
如果我可以添加虚拟外接显示器,我就可以设置一个扩展桌面镜像到两个外接显示器(投影仪和虚拟显示器)。然后,断开并重新连接两个镜像显示器之一不应该重新排列窗口。这里的第一个问题是我甚至不知道是否可以复制扩展桌面。
第二个问题是添加虚拟显示,为此我尝试了很多解决方案:
A)HDMI 转 VGA,然后 VGA 分配器,然后 VGA 虚拟棒这应该是相对万无一失的,因为它避免了第一个问题 - Windows 不需要镜像第二和第三个显示器
b)USB 转 VGA,可能带有一个假棒,以防 Windows 无法获知有显示器连接到 VGA 端口(我已经订购了适配器,因此我可以测试这一点)
C)使用移动应用程序将显示扩展到手机,例如这个: https://play.google.com/store/apps/details?id=com.devguru.eltwomonusb&hl=es 因此,在这种情况下,它不会是幽灵显示器,而是实际的设备 - 但分辨率可能不匹配,并且由于非正统方法,可能会出现其他问题。
d)使用软件将显示内容发送到另一台 PC 或其他设备。据称,这可以通过 Windows Connect、iDisplay、Airscreen、Splashtop Extended Desktop 或其他工具来完成。这还将产生实际的附加显示内容,而不是虚拟的 - 它只是不会通过电缆连接。
3)摆弄下面的设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
正如这里所建议的,以及其他地方: 如何在从睡眠状态唤醒后停止窗口重新定位?
我没有在线描述的 SIMULATED 条目,但我有一个 MSNILNOEDID...,它可能具有类似的功能。我有一个笔记本电脑屏幕条目(HHT00301...),还有十几个投影仪条目(BOE06F90...)。它们似乎都按照其他答案的配置进行配置:笔记本电脑屏幕为 3840x2160,投影仪条目为 1920x1080,(据称)模拟条目为 1920x1080。
4)使用 HDMI 开关,让 PC 误以为显示器仍处于连接状态。
我不知道这样的设备是否存在,如果存在,我不知道如何找到它。
5) 使用自定义软件解决方案在投影仪断开连接时模拟外部显示。
我在这里找到了一个这样的解决方案:https://archive.codeplex.com/?p=persistentwindows 该项目已停止,但我设法下载了代码。幸运的是,这是一个 .NET 应用程序,我是一名 .NET 开发人员,但看起来工作量很大 - 它甚至无法开箱即用,看起来很复杂,而且我没有任何验证它是否真的有效。
答案1
请尝试最新增强功能持久窗口
免责声明:我是增强功能的贡献者
答案2
答案是选择1. b) 使用 VGA 输出
插入 HDMI 转 VGA 适配器后,Windows 会将其作为外接显示器,并乐意将桌面扩展到它。然后,您可以随心所欲地连接或断开外接显示器,打开的窗口将保留在原处(或者在我的情况下,您可以使用 HDMI 开关切换出此视频源,然后再返回)。
因此,我不是直接从 HDMI 输出连接到 HDMI 开关,而是使用连接到 VGA 转 HDMI 电缆的 HDMI 转 VGA 适配器;这听起来很荒谬且技术含量低,但它确实有效,而且似乎会一直保持这种状态,直到微软添加一种可靠的方法来禁用此显示自动检测功能。