2012-07-25 15:15:19 +0000 2012-07-25 15:15:19 +0000
123
123

如何在睡醒后停止窗口重新定位?

当我的多显示器系统不使用时,我将其置于睡眠状态。在我把它唤醒后,所有的窗口都会重新定位到不同的屏幕上。我能想到的最接近的模式是,主屏幕上的窗口会切换到第二个屏幕上。它看起来像是在睡眠前断开了主屏幕的连接,进而将所有的窗口切换到第二或第三屏幕上。

编辑:这是我使用的显卡–> SAPPHIRE FleX 100322FLEX Radeon HD 6450。

答案 (12)

51
51
51
2014-12-06 15:01:19 +0000

这是一个老问题了,但如果有人遇到同样的问题,我建议试试这里发布的解决方案: http://answers.microsoft.com/en-us/windows/forum/windows\7-hardware/windows-7-movesresizes-windows-7-movesresizes-windows-on-monitor-power/1653aafb-848b-464a-8c69-1a68fbd106aa

我运行的是Windows 8.1,有两个2560x1440的显示器,在DisplayPort上。当我从睡眠中醒来时,我的所有窗口都被推到了一个显示器上,并且有的窗口被调整了大小。这为我解决了这个问题,现在我所有的窗口位置和大小都被保留了下来。以下是相关链接内容:

我找到了一个解决方法。使用Sysinternals ProcessMonitor,我发现Windows正在访问以下注册表路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration

我的系统有三个条目:

  • DELF003YY7707BR0MUL_30_07D7_6A^9A3774EB79DEE3E3E38496CC7DF4D936
  • QHD32000001_31_07D6_D5^63E1ABDD175E7871DCAEB710418A0F75
  • SIMULATED_8086_2A42_00000000_00020000_1010100^CDE365D1B3F0942F0CF38BFB8E127AB4
  • 00

每一个条目下都有一个树状的名称为PrimSurfSize.cx。其中两个键是:

  • PrimSurfSize.cy
  • 00

  • 00

ActiveSize.cx下面是另一个分支,也叫ActiveSize.cy。其中两个键是:

  • DELF00...
  • QHD3...
  • SIMULATED...

在前两个配置中(即SIMULATED... &007 &007),上面的键都是1440x900,所以没有涉及到。

进一步我把分辨率(通过控制面板)改成1920x1080,移动/大小问题又回来了,但是右下角的设置是1600x900,也就是&007的设置。

34
34
34
2012-07-25 18:55:07 +0000

这个问题很可能是图形驱动的问题。每当一个显示器与Windows中的多显示器设置断开连接时,Windows就会尝试将该屏幕上的所有内容移动到剩余的屏幕上。通常情况下,暂停/休眠/关闭计算机时不会出现这种情况。因此,这可能是由于显卡驱动程序做了以下其中一个原因:

  • 当你把电脑置于睡眠状态时,"断开 “显示器的连接,所以当Windows唤醒时,它必须重新确定所有的东西放在哪里。
15
15
15
2016-01-12 15:18:50 +0000

如果你的电脑有Intel HD Graphics,你必须在Intel Graphics控制面板中设置Extend Display选项(和分辨率设置)。如果你从Windows显示设置中进行设置,在你从睡眠模式下唤醒它后,它将重新设置。

9
9
9
2015-11-22 06:14:45 +0000

我想我找到了一个解决这个问题的方法,结合这些帖子的想法,我找到了一个解决这个问题的方法。删掉…GraphicDriversConfiguration和GraphicDrivers\Connectivity下所有多余的注册表项,只留下与我的显示器相对应的项(MST00301…)

  1. 在显示器进入睡眠状态之前,只需输入 “WIN ”+“D "组合键,将所有桌面窗口最小化。开启显示器后,再次输入 "WIN ”+“D "组合键恢复所有窗口。
5
5
5
2018-03-09 19:27:52 +0000

并不是所有的NVIDIA显卡都支持伪造EDID的能力,造成这个问题的不仅仅是Sleep,还有就是Sleep。如果显示器被关闭或短暂断开,会对精心配置的屏幕布局造成严重破坏。由于这里的解决方案都没有对我有效,所以我写了一个工具,当显示器的数量发生变化时,可以恢复窗口位置。它的源代码这里

2
2
2
2016-05-24 17:55:30 +0000

在我的情况下,有三个1920x1080的显示器横向排列,似乎通过进入其他答案中提到的注册表键(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration),找到以SIMULATED开头的键,然后将该键下的1920的值全部改成5760(1920乘以3,对于三个显示器来说,1920乘以3),就可以解决这个问题。

2
2
2
2014-04-18 12:34:45 +0000

在Windows 8.1和Macbook Air 2013 (Intel HD Graphics 5000)上也有同样的问题。我尝试了一切。最后,我去英特尔更新了最新的驱动程序,我的显卡和问题继续。然后,我去了图形属性,与我的第二个显示器在多显示器打开,我选择了'断开这个显示器',然后在第二个显示器断开后,我选择扩展我的桌面和问题消失。希望这个方法对你有用。

2
2
2
2012-07-25 16:37:49 +0000

通常情况下,这将是由于显卡驱动没有正确支持休眠模式导致的,因此当电脑进入休眠状态时,无法检测到所连接的显示器。

如果更新驱动后仍不能解决这个问题,可能是由于显示器ID(EDID)异常报告导致的。通常可以在显卡驱动控制面板中强制检测显示器。

但是如果无法使用,可以在显示器断开连接的情况下,使用Windows分辨率窗口检测设备,然后选择显示器,它会报告 “另一个显示器未连接",然后在多显示器下,可以下拉选择 "无论如何尝试连接",这样会通过你选择的端口类型向显示器广播信号(信号不会是交互式的),然后连接显示器,显示器应该会正确解释发送的信号。

强制分辨率将覆盖屏幕的检测,并应在休眠状态下持续存在。

1
1
1
2018-02-22 15:26:33 +0000

对我来说,修复方法是 https://superuser.com/a/908156/238666 。摘要:Windows在唤醒时无法从显示器上读取EDID信息,在Nvidia控制面板中可以将EDID信息保存到一个文件中,并设置PC从该文件中读取EDID信息,在任务项下。

在我有限的视野中,问题的根源可能是Nvidia显卡,但也可能是Windows、DisplayPort或显示器(联想X1 4K)。

0
0
0
2019-04-12 12:56:49 +0000

我用这个小程序解决了。 https://github.com/hunkydoryrepair/MonitorKeeper/releases

只要运行它,它就可以在相同的位置上维护窗口。

0
0
0
2019-12-18 03:03:02 +0000

Win Redock](https://github.com/manutalcual/winredock)在我的使用案例中效果最好—-在显示更改后恢复窗口位置。Redock是自动的 - 保存和恢复窗口,无需任何干预。

所以如果你的问题是你的笔记本在唤醒时显示位置有问题,这可能会帮助你。

-1
-1
-1
2016-03-15 02:00:50 +0000

喜欢与否,但根据戴尔的已知问题与特定4K显示器的链接 http://www.dell.com/support/Article/us/en/19/SLN295708/EN 我不得不在我的3台戴尔P2415Q 4K UHD 4K显示器上从59/60Hz切换到30Hz,Intel 4600与显示器的DP/mDP连接,它帮助了我–正如戴尔KB文章所说。这也适用于UP3214Q和P2715Q。

问题没有在低分辨率的QHD戴尔U2515H +相同的视频/PC上表现出来

注册表键删除和驱动更新都没有帮助。并且将显卡升级到NVIDIA Quadro P600也没能解决这个问题,所以停留在30Hz上。