我有一个新的 6870 Amd Radeon 适配器,其驱动程序设置为 1080p 60Hz 分辨率,连接到 2008 47 英寸高端三星 HDMI 电视。
但是,当电视切换到不同的 HDMI 输入时(当我返回 Windows 时),Windows 不知何故决定将所有打开的应用程序调整为较低的分辨率 - 包括一些侧面停靠的隐藏弹出窗口。但是,当它调整这些窗口的大小时 - 它只是将弹出窗口粘贴在屏幕中间,并将所有已打开应用程序的已调整大小的窗口粘贴在左上角 - 所有这些窗口都堆叠在一起并调整为较小的分辨率。
回来之后看上去没问题的东西就是桌面上的图标,任务栏,侧边栏。
有谁知道 1) 这种情况是如何发生的 2) 为什么会发生 3) 如何阻止它调整应用程序和某些停靠弹出窗口的大小(它们在返回后并没有真正调整大小 - 它们只是停留在屏幕中间,大约在屏幕调整为较低分辨率时右侧或底部侧边栏应该所在的位置)。
我的假设是,在丢失 HDMI 信号后,Windows 会被某些东西(驱动程序或 Windows 本身)告知分辨率没有信号(请注意,HDMI 信号和握手在 HDMI 设备上是双向的。如果它丢失信号或电视切换到另一台设备 - 那么显示适配器必须弄清楚并告诉 Windows,或者弄清楚并随机设计以更改显示尺寸)。
非常感谢大家的帮助。我问过 AMD/ATI - 但他们说不知道为什么或怎么会发生这种情况。我希望这也许是超级用户真正要去的地方 - 那些开发显示适配器驱动程序的人,或者深入研究 Windows 这些领域的人。如果有更好的网站或只是竞争网站 - 请提供建议 - 注意我已经写过 AMD/ATI。
回复/补充 4/7/2011
很高兴收到你的回复,Shinrai。 (顺便问一下,在这些论坛上进行讨论是否符合礼仪?) 但“只有一个问题”——我正在使用单显示在这种情况下 - 因此 Windows 不会将应用程序窗口移动到另一个桌面。Windows(或其他程序)决定缩小其当前拥有的桌面并将所有窗口的大小调整为桌面的最大大小。因此,如果 Windows 只保留正在运行的一个桌面的当前大小,我会很高兴。
我也知道这不会发生在通过 DVI 连接的显示器上。 我已经设置了一台和两台显示器,当断开显示器连接、关闭显示器等时,它根本不会调整那些屏幕的大小……它们保持稳定 - 一切都在原位 - 以至于如果你忘记了另一台显示器已关闭 - 如果不使用其中一个控制应用程序实用程序,你将很难找到某些窗口。
因此,如果我甚至可以通过 Windows(或显示驱动程序)获得 HDMI 处理(1] 无论如何,显示驱动程序或 Windows 都会这样做 - 以及 2] 其他分辨率大小(1024x768)来自哪里 - 它不是最小的,也不是最大的?)像 DVI 一样 - 生活就会很美好(无论如何就这个方面而言)。
** 在此主题中发现其他人也有同样的问题:http://hardforum.com/showthread.php?t=1507324
答案1
我已经研究这个问题两天了,发现了几种解决方案:
通用解决方案,软件程序持久窗口,它保存了所有窗口位置和监视器显示。如果分辨率更改后再更改回来,则它会恢复相同的大小和位置!正是我想要的。最新版本只是完成它的工作,并静静地坐在系统托盘中。关联
#1 的分支。但需要 Windows 10 Creators Update。更好的高 DPI 支持。更高效的 CPU 效率。关联
对于某些 ATI 用户来说,这个方法有效,但对于某些用户来说,这个方法无效,但有证据显示这个方法有效。解决方案是使用注册表破解键
DMMEnableDDCPolling
,完全禁用 Windows 下的显示器连接轮询。需要注意的是,更改后您需要重新启动系统,如果您只需要快速连接一些外部屏幕,那么这种方法就不方便了。关联NVIDIA 显卡用户很幸运。解决方案是将显示器 EDID 信息硬编码到 VGA 驱动程序的文件中,这样系统就认为这不会改变。 在 Windows 上管理显示器 EDID
HDMI 连接的硬件解决方案,他们在网络和 eBay 上销售他们的适配器。关联
另一个实用程序Windows 布局管理器保存布局并根据需要恢复(管理各种布局)。更复杂,更强大,但对普通用户来说可能有点过头了。关联
我坚持 #1 一段时间了(从 2015 年就开始了 :)),如果发现更多,他们会分享。
更新 2024:Windows 的窗口管理变得更好了,但我已经使用 Apple 很多年了,即使在系统重启后它也能记住窗口。
答案2
我的 Radeon R9 遇到了这个问题,我所做的就是禁用 AMD Catalyst 上的 GPU 缩放。
但出于某种原因仍然会发生,请先备份您的注册表!然后打开您的 Windows 注册表并转到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
仅在“SIMULATED”或“NOEDID”键(Windows 10)下,将键小数位更改为:
PrimSurfSize.cx = 1920
PrimSurfSize.cy = 1080
在“00”下:
ActiveSize.cx = 1920
ActiveSize.cy = 1080
更改为您正在使用的分辨率。这将防止您的窗口在您关闭显示器时缩小或从一侧移动到另一侧。
答案3
您的猜测是正确的;当您切换输入时,显示器实际上会关闭该 HDMI 通道上的握手。Windows 7 将此视为“此处不再连接显示器”,此时它会禁用该输出。由于该屏幕不再存在,其上的所有内容都必须移至某个地方,因此它会将所有内容重新排列到剩余的显示器上,这并不美观。当显示器恢复时,Windows 7 会在某种程度上记住您如何安排内容,但它不会重新排列您的窗口(毕竟,在此期间您可能已经关闭、打开或以其他方式移动了它们!)。
您无法使用显示驱动程序来修复此问题;这是操作系统的行为,虽然这对您的情况不方便,但却是有道理的。(另一种选择是显示器上显示实际上不存在的东西,XP 有时就是这样,让我告诉您,这是一场噩梦。)可能有一些第三方软件可以强制避免这种情况发生,但我不知道有什么现成的软件,我怀疑您会冒着导致其他问题的风险。(如果有人真的可以发布任何答案,我会很高兴对这些答案点赞。)
答案4
强烈推荐纯软件解决方案“PersistentWindows”(原始版本),正如之前的帖子所提到的。
该应用程序会跟踪窗口的大小/位置,并在相同的监视器设置再次启用时自动恢复其最后的布局。
基于原始源代码和运行时优化版本在 github 上我设法做了进一步的改进,如下:
修复由于大量窗口调整大小请求和 Visual Studio 代码更新导致的随机挂起。
更可靠的远程桌面体验
- 可以作为 Windows 启动作业运行
对于那些想要尝试新版本的人,这里是发布链接 持久窗口
享受!