スリープ状態から覚醒した後のウィンドウの再配置を止めるには?
マルチモニターシステムを使用していない時にスリープ状態にしています。目覚めた後、すべてのウィンドウが別の画面に再配置されてしまいます。一番近いパターンは、メイン画面にあったウィンドウがセカンド画面に切り替わるというもの。スリープ状態になる前にメイン画面を切り離して、すべてのウィンドウを第2、第3画面に切り替えるようです。
マルチモニターシステムを使用していない時にスリープ状態にしています。目覚めた後、すべてのウィンドウが別の画面に再配置されてしまいます。一番近いパターンは、メイン画面にあったウィンドウがセカンド画面に切り替わるというもの。スリープ状態になる前にメイン画面を切り離して、すべてのウィンドウを第2、第3画面に切り替えるようです。
これは古い質問ですが、同じ問題でここに来た人がいたら、ここに投稿されている解決策を試してみることをお勧めします: http://answers.microsoft.com/en-us/windows/forum/windows http://answers.microsoft.com/en-us/windows/forum/windows_7-hardware/windows-7-movesresizes-windows-on-monitor-power/1653aafb-848b-464a-8c69-1a68fbd106aa
私は Windows 8.1 を実行していて、2 つの 2560x1440 のディスプレイを DisplayPort 上に置いています。スリープから覚めると、すべてのウィンドウが1つのディスプレイにプッシュされ、いくつかのウィンドウのサイズが変更されていました。これでこの問題は解決されました。ここに関連するリンクの内容があります:
私は回避策を見つけました。Sysinternals ProcessMonitor を使用して、Windows が以下のレジストリパスにアクセスしていることを発見しました:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
私のシステムには 3 つのエントリがありました:
DELF003YY7707BR0MUL_30_07D7_6A^9A3774EB79DEE3E3E38496CC7DF4D936
QHD32000001_31_07D6_D5^63E1ABDD175E7871DCAEB710418A0F75
SIMULATED_8086_2A42_00000000_00020000_1010100^CDE365D1B3F0942F0CF38BFB8E127AB4
00
それぞれの下には
PrimSurfSize.cx
と呼ばれるツリーがあります。キーの2つは次のとおりです:
PrimSurfSize.cy
00
00
ActiveSize.cx
の下にまたActiveSize.cy
と呼ばれる別の枝がありました。そのうちの2つのキーは:
DELF00...
QHD3...
最初の2つの設定(つまり
SIMULATED...
SIMULATED...
)では、上記のキーは1440x900だったので関係ありません。さらに解像度を(コントロールパネル経由で)1920x1080に変更したところ、移動/リサイズの問題は復活しましたが、右下隅は1600x900、つまり&007の設定になっていました。
すると、なぜか設定の1つが正しく設定されません。
この問題は、グラフィックドライバに原因がある可能性が高いです。Windowsでマルチモニターのセットアップから1つのモニターが切り離されると、Windowsはその画面から残りの画面にすべてのものを移動しようとします。通常、コンピュータを一時停止/停止/シャットダウンするときには、このようなことは起こりません。このため、グラフィックドライバが以下のいずれかを行っていることが原因と考えられます:
コンピュータをスリープ状態にしたときにモニターを「切断」するため、Windows が目覚めたときに、すべてのものを配置する場所を再決定しなければなりません。
コンピュータをスリープ状態から取り出すたびに異なる順番でモニターを認識し、Windows がアプリケーションウィンドウを再配置することを余儀なくされます。
この問題は、 これらの投稿 のアイデアを組み合わせて、回避策を見つけたと思います。
(私のPCは、Windows 10 TH2, Intel HD4600 with HDMI port, Changhong 4k monitor)
手順は以下の通りです。私のモニターに対応するエントリだけを残して、…GraphicDrivers\ConfigurationとGraphicDrivers\Connectivityの下のすべての余分なレジストリエントリを削除します(MST00301….)
すべてのNVidiaカードがEDIDを偽装する機能をサポートしているわけではなく、この問題を引き起こすのはSleepだけではありません。モニターの電源がオフになったり、一時的に切断されたりすると、慎重に設定された画面レイアウトに大混乱をもたらす可能性があります。ここでの解決策がどれもうまくいかなかったので、モニターの数が変わったときにウィンドウの位置を元に戻すユーティリティを書いてみました。これはソースコード こちら で公開されています。
私の場合、1920×1080のモニターが3台横に並んでいたので、他の回答にあったレジストリキー(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
)に行き、SIMULATED
で始まるキーを見つけ、そのキーの下の1920の値を全て5760(1920×3、3台のモニターの場合)に変更することで直ったようです。
SIMULATED
キーはPCがスリープ状態になった時に使うものだと思いますが、実際のモニターがまだ報告していなくても、Windowsはスリープ状態になったり再開したりする過程でデスクトップを維持する必要があります。
Windows 8.1とMacbook Air 2013 (Intel HD Graphics 5000)でここでも同じ問題が発生しています。私はすべてを試してみました。最後に私は私のグラフィックカードの最新のドライバで更新されたIntelに行き、問題は継続しています。その後、私はグラフィックのプロパティに行き、私の2番目のディスプレイが複数のディスプレイでオンになっている状態で、私は'このディスプレイを切断'を選択し、2番目のディスプレイが切断された後、私は私のデスクトップを拡張を選択し、問題は消えてしまいました。これがあなたのために動作することを願っています。
通常、これはグラフィックドライバが適切にスリープモードをサポートしていないため、コンピュータがスリープ状態になったときに接続されたディスプレイを検出する機能を無効にしていることが原因です。
問題を解決するためには、メーカーからグラフィックドライバをアップデートしてください。あなたは通常、グラフィックスドライバのコントロールパネル内のモニタの検出を強制することができます.
しかし、これが利用できない場合は, モニタが切断されている間、デバイスを検出するためにWindowsの解像度ウィンドウを使用することができます, その後、"別のディスプレイが接続されていない “を報告するディスプレイを選択します, 複数のディスプレイの下で, あなたはドロップダウンすることができますし、選択したポートタイプ上のモニタに信号をブロードキャストする "とにかく接続しようとする "を選択します (信号はインタラクティブではありません), その後、適切にそれに送信された信号を解釈する必要がありますディスプレイを接続します.
強制解像度は、画面の検出を上書きし、スリープ中に持続する必要があります。
私の場合、修正方法は https://superuser.com/a/908156/238666 でした。要約:Windowsは、ウェイクアップ時にモニターからEDID情報を読み取るのに失敗し、Nvidiaのコントロールパネルでは、タスクの下で、ファイルにEDID情報を保存し、そのファイルからそれを読み取るようにPCを設定することができます。ワークステーション、システムトポロジー、EDIDソースを表示します。
私の限られた見解では、根本的な問題は、Nvidiaカードだけでなく、Windows、DisplayPort、またはモニタ(Lenovo X1 4K)かもしれません。
この小さなアプリで解決しました。 https://github.com/hunkydoryrepair/MonitorKeeper/releases ] (https://github.com/hunkydoryrepair/MonitorKeeper/releases)
実行するだけで、ウィンドウズを同じ位置に維持してくれます。
Win Redock ](https://github.com/manutalcual/winredock)は、私のユースケースでは、表示変更後にウィンドウの位置を復元するのに最適でした。Redockは自動である - 任意の介入なしでウィンドウを保存し、復元します。そのオープンソースも。
だから、あなたの問題は、あなたのラップトップは、それが目を覚ますときにディスプレイのしゃっくりを持っていることであれば、これはあなたを助けるかもしれません。
それが好きかどうか、しかし、特定の4kモニターのリンクhttp://www.dell.com/support/Article/us/en/19/SLN295708/EN私はディスプレイの純正DP/mDPと接続されたIntel 4600上の私の3 x Dell P2415Q 4K UHD上で59/60Hzから30Hzに切り替えなければならなかったとそれは私を助けた - DellのKBの記事によると、それはあまりにもUP3214QとP2715Qに適用されます。それはあまりにもUP3214QとP2715Qに適用されます。
問題は、低解像度QHD Dell U2515H + 同じビデオ/PCでは明らかになりませんでした
レジストリキーの削除とドライバの更新は助けになりませんでした
2018/08を更新しました。そしてグラフィックカードをNVIDIA Quadro P600にアップグレードしても問題が解決しなかったので、30Hzのまま。