从睡眠中醒来后如何停止窗户重新定位?


116

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

编辑:这是我正在使用的视频卡-> SAPPHIRE FleX 100322FLEX Radeon HD 6450


1
您需要指定使用的图形适配器,这可能是它们的问题。
井镇2012年

3
我找到了最终解决这个:做斯蒂芬(ST99)说,这里在第九答案
Soldeplata Saketos

同样的问题在kubuntu上,有人对此有解决方案吗?
Waqleh

无法添加为答案,但是阅读了此答案此答案后,我发现解决方案是对HKLM \ SYSTEM \ CurrentControlSet \ Control \ GraphicsDrivers \ Configuration的操作。在断开所有其他监视器的连接的情况下,删除此路径上的所有键,然后重新启动PC。请注意新密钥添加到此路径(A)。重新连接监视器,并注意添加了新的键(B)。根据需要设置显示设置。新密钥将再次添加(C)。每个键代表一个显示配置。删除不需要的密钥(可能是密钥B)。
Neo

Answers:


34

该问题最有可能与图形驱动程序有关。每当从Windows中的多监视器设置断开单个监视器时,Windows都会尝试将所有内容从该屏幕移至其余屏幕。通常,在挂起/休眠/关闭计算机时不会发生这种情况。因此,可能是由于图形驱动程序执行以下操作之一:

  • 当您使计算机进入睡眠状态时,“断开”显示器的连接,因此,当Windows唤醒时,它必须重新确定所有放置位置。
  • 每次使计算机进入睡眠状态时,它们以不同的顺序识别监视器,从而迫使Windows重新排列应用程序窗口。

请访问芯片组制造商的网站,检查图形驱动程序是否有更新。


1
仅供参考:我的驱动程序来自Intel,因此我认为它们是通过Windows Update签名并分发的,但不是。
狮子座

1
这里有类似的问题。我有一台配备nVidia图形适配器的戴尔笔记本电脑。从nVidia而非Dell驱动程序安装更新的驱动程序解决了该问题。
克里斯·琼斯

1
类似的问题在这里。最新的OEM Intel HD 4600驱动程序。我应该检查PC供应商(HP)的驱动程序吗?
Falco Alexander

2
7i5bnk NUC遇到同样的问题-最新的英特尔驱动程序
niico

46

这是一个古老的问题,但是如果有人遇到同样的问题,我建议尝试这里发布的解决方案:

http://answers.microsoft.com/zh-CN/windows/forum/windows_7-hardware/windows-7-movesresizes-windows-on-monitor-power/1653aafb-848b-464a-8c69-1a68fbd106aa

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

我找到了一种解决方法。使用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...)中,上述键为1440x900,因此没有涉及。

第三个(SIMULATED...)设置为1024x768。

我将它们更改为1600x900,问题已解决。

进一步,我(通过控制面板)将分辨率更改为1920x1080,返回了移动/调整大小的问题,但右下角设置为1600x900,即SIMULATED...设置。

因此出于某种原因,其中一个配置未正确设置。

我不知道为什么有三个配置,我只用过一个监视器。


15
只需删除整个HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ GraphicsDrivers \ Configuration,它就可以正常工作并且速度更快。
FarO

3
删除条目对我不起作用(Windows 10)。当我关闭显示器时,将再次创建“ SIMULATED”条目。原始解决方案有效(即以实际分辨率修改每次出现的1024,768)。
FractalSpace

2
这里还有一个相关的文章中,我对微软的答案为Windows 10,发现answers.microsoft.com/en-us/windows/forum/windows_10-hardware/...
Chiramisu

1
按照@OlafM的建议删除整个配置非常有效。就我而言,Windows大约有30个条目。重新启动后,仅重新创建了一个,仅包含我实际插入int的监视器。
maja

1
我对于删除Configuration文件夹中的所有内容感到不安,但我首先进行了导出,然后删除了所有内容,从而解决了该问题,在恢复后,我必须设置监视器顺序,但似乎没有得到解决。
drooh

13

如果您的计算机装有Intel HD Graphics,则必须在Intel Graphics Control Panel中设置“扩展显示”选项(和分辨率设置)。如果从Windows Display设置执行此操作,则将其从睡眠模式唤醒后将重置。

这是屏幕截图。

在此处输入图片说明


它对我没有任何改变。还是在使用英特尔软件之前必须彻底擦除Windows设置?
Christophe Drevet-Droguet

1
在我重置设置然后从Intel图形应用后,它对我有用。
Tidhar Klein Orbach

我只是切换了一些选项,然后又将其还原了。它启用了“应用”按钮并从驱动程序中保存了配置。手动锁定后效果很好。我会看到很长一段时间后会发生什么
-Aldian

这在Windows 10上为我工作,并节省了理智。
shoelzer

9

我想我通过结合这些帖子中的想法找到了解决此问题的方法。

(我的电脑是Windows 10 TH2,带HDMI端口的Intel HD4600,长虹4k显示器)

这是步骤。

  1. 删除... GraphicDrivers \ Configuration和GraphicDrivers \ Connectivity下的所有其他注册表项,仅保留与我的监视器相对应的条目(MST00301 ...)

  2. 在使显示器进入睡眠状态之前,只需键入“ WIN” +“ D”组合键以最小化所有桌面窗口。

  3. 打开监视器后,再次键入“ WIN” +“ D”以还原所有窗口。


1
我认为不需要Win + D。删除所有条目并重新启动计算机后,外部监视器将再次添加到注册中。之后,它似乎按预期工作。也许Windows混淆了许多不同的配置。以我为例,
mgutt

这对我有用,但仅在更正了新的SIMULATED_ ...键之后。重新启动后,在“配置”和“连接性”下有两个新条目。SIMULATED_ 00条目的cx,cy和跨度值有1024、768和4096,这是错误的。我只从另一个键复制了那些值(对于我的显示器似乎是正确的),然后重新启动。我有一个40英寸4K显示器,一个Wasabi Mango UHD400,现在问题已解决
。– pixelgrease

对我来说,即使不更改注册表,Win + D的技巧仍然有效,但这种方法不起作用。请注意,不必将桌面最小化:关闭并重新打开显示器后,位于1024x768框外的桌面图标将不会移动。同样,最大化的窗口不会出现大小调整/移动问题。
罗兰

4

并非所有的NVidia卡都支持伪造EDID的功能,不仅仅是睡眠会导致此问题。如果显示器关闭或短暂断开连接,则可能会对精心配置的屏幕布局造成严重破坏。由于这里没有一种解决方案适合我,因此我编写了一个实用程序来在监视器数量更改时还原窗口位置。可在此处获取源代码。


1
我已经测试了@GarrGodfrey的程序,它的工作原理很吸引人。

2

通常,这是由于图形驱动程序未正确支持睡眠模式而导致的,因此会在计算机进入睡眠状态时禁用检测已连接显示器的功能。

从制造商那里更新您的图形驱动程序以解决此问题。

如果更新驱动程序后问题仍未解决,则可能是由于异常报告的显示ID(EDID)所致。通常,您可以在图形驱动程序控制面板中强制检测监视器。

但是,如果此选项不可用,则可以在断开显示器的情况下使用Windows分辨率窗口检测设备,然后选择将报告“另一个未连接的显示器”的显示器,然后在“多个显示器”下单击并选择“尝试仍然连接”,它将通过您选择的端口类型向显示器广播信号(该信号将不是交互式的),然后连接显示器,显示器应正确解释发送给它的信号。

强制分辨率将覆盖对屏幕的检测,并且应在睡眠中持续存在。


2

Windows 8.1和Macbook Air 2013(Intel HD Graphics 5000)在这里也存在同样的问题。我尽力了。最终,我去了Intel,并为其显卡更新了最新驱动程序,问题仍然存在。然后,我进入了graphics属性,在“ Multiple Display”中打开第二个显示器,然后选择“ Disconnect this display”,然后在断开第二个显示器的连接之后,选择“扩展桌面”,问题就消失了。希望这对您有用。


我也有配备最新驱动程序的Macbook Air 2013,但并不能解决我的问题。您有什么想法我该如何解决?
2014年

2

在我的情况下,水平放置三个1920x1080显示器,似乎已经解决了,方法是转到其他答案(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration)中提到的注册表项,找到以开头的项SIMULATED,然后将该键下的1920的所有值更改为5760(1920乘以三个,则为三个监视器)。

我猜想该SIMULATED密钥用于PC进入睡眠状态,但是Windows仍需要在进入睡眠状态或从睡眠状态恢复的过程中维护台式机,即使实际的监视器可能尚未报告自己。


这是对我最大的帮助。您的第二段尤其正确。虽然在屏幕关闭时我仍然有窗口移动到其他显示器。
安德鲁

1

对我来说,解决方法是https://superuser.com/a/908156/238666。摘要:Windows在唤醒时无法从监视器读取EDID信息,并且在Nvidia控制面板中,您可以将EDID信息保存到文件中,并将PC设置为从该文件中读取它,位于“任务:工作站,查看系统”下。拓扑,EDID源。

以我的有限观点,根本问题可能是Nvidia卡,也可能是Windows,DisplayPort或显示器(联想X1 4K)



-1

不管喜欢与否,但是根据戴尔针对特定4k显示器的已知问题,链接:http : //www.dell.com/support/Article/us/en/19/SLN295708/EN 我必须从59 / 60Hz切换到30Hz我的3 x Dell 4600上的Dell P2415Q 4K UHD与显示器的现货DP / mDP相连,这对我很有帮助-如Dell KB文章所述。它也适用于UP3214Q和P2715Q。

在分辨率较低的QHD Dell U2515H +相同的视频/ PC上未显示该问题

注册表项删除和驱动程序更新无济于事。

更新2018/08:将图形卡升级到NVIDIA Quadro P600并没有解决问题,因此保持30Hz。


1
糟糕,太厉害了30Hz,太结实了。
西蒙·伊斯特(East Simon East)

@SimonEast,距我发布此答案并在30Hz下使用这些4K-s已经有一年了,它对荧光和LED闪烁敏感,并且在可能的情况下更喜欢DC 12V卤素灯照明,我想说在这些4K Dell显示器上30Hz是可以的。Youtube动作视频比较平稳,但我通常将这些屏幕用于代码,终端,邮件和聊天-每天10-12小时后不要感到疲倦
。.– kuz8
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.