マルチモニタシステムを使用していないときはスリープ状態にします。目を覚ますと、すべてのウィンドウは別の画面に移動します。私が考えることができる最も近いパターンは、メインスクリーン上にあったウィンドウがセカンドスクリーンに切り替わることです。メイン画面がスリープ状態になる前に切断され、それによってすべてのウィンドウが2番目または3番目の画面に切り替わります。
編集:これが私が使っているビデオカードです - > SAPPHIRE FleX 100322FLEX Radeon HD 6450
この問題はグラフィックドライバにある可能性が最も高いです。 1つのモニタがWindowsのマルチモニタ設定から切断されると、Windowsはその画面から残りの画面にすべてを移動しようとします。通常、これはコンピュータのサスペンド/休止状態/シャットダウン時には発生しません。したがって、それはおそらくグラフィックドライバが以下のいずれかを実行しているためです。
チップセット製造元のWebサイトにアクセスして、グラフィックドライバが更新されているかどうかを確認してください。
これは古い質問ですが、同じ問題で誰かがここに到着した場合は、ここに掲載されている解決策を試してみることをお勧めします。
DisplayPortに2560 x 1440のディスプレイを2つ搭載したWindows 8.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
というツリーがあります。 2つの鍵は以下のとおりです。
PrimSurfSize.cx
PrimSurfSize.cy
00
の下には00
とも呼ばれる別のブランチがありました。 2つの鍵は以下のとおりです。
ActiveSize.cx
ActiveSize.cy
最初の2つの設定(つまり
DELF00...
とQHD3...
)では、上記のキーは1440 x 900なので、それらは関係していませんでした。3番目(
SIMULATED...
)は1024 x 768に設定されています。これらを1600 x 900に変更して問題を解決しました。
さらに私は解像度を1920 x 1080に変更し、移動/サイズ変更の問題が返ってきましたが、右下隅は1600 x 900、すなわち
SIMULATED...
設定に設定されていました。そのため、何らかの理由で設定の1つが正しく設定されません。
なぜ3つの設定があるのか私にはわかりません、私は今までに1つのモニタしか使用したことがありません。
私はこれらの記事の からのアイデアを組み合わせることでこの問題の回避策を見つけたと思います 。
(私のPCはWindows 10 TH2、HDMIポートを備えたIntel HD4600、Changhong 4kモニターです)
これが手順です。
... GraphicDrivers\ConfigurationおよびGraphicDrivers\Connectivityの下にある余分なレジストリエントリをすべて削除し、自分のモニタに対応するエントリのみを残します(MST00301 ...)
モニタをスリープ状態にする前に、単に "WIN" + "D"コンボキーを押してすべてのデスクトップウィンドウを最小化してください。
モニタをオンにした後、もう一度 "WIN" + "D"と入力してすべてのウィンドウを元に戻します。
すべてのNVidiaカードがEDIDを偽造する機能をサポートしているわけではなく、この問題を引き起こしているのはスリープだけではありません。モニタの電源が切られたり、短時間切断されたりすると、慎重に設定された画面レイアウトに大きな損害を与える可能性があります。ここでの解決策のどれも私のためにうまくいかなかったので、私はモニターの数が変わったときにウィンドウの位置を元に戻すためのユーティリティを書きました。ソースコード はこちら で利用可能です。
私の場合、3台の1920 x 1080モニターを水平に配置して、他の回答(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
)に記載されているレジストリキーに移動し、SIMULATED
で始まるキーを見つけ、そのキーの下の1920の値をすべて5760に変更します(1920×3、3台のモニターの場合)。
SIMULATED
キーはPCがスリープ状態に入るときに使用されると思いますが、実際のモニタがまだ自分自身を報告していない場合でも、Windowsはスリープ状態に入る/再開する過程でデスクトップを維持する必要があります。
通常、これはグラフィックドライバがスリープモードを適切にサポートしていないために、コンピュータがスリープ状態になったときに接続されたディスプレイを検出する機能が無効になっていることが原因で発生します。
問題を解決するために製造元からグラフィックドライバを更新します。
ドライバを更新しても問題が解決しない場合は、異常に報告されたディスプレイID(EDID)が原因である可能性があります。通常、グラフィックドライバのコントロールパネル内でモニタの検出を強制することができます。
これが利用できない場合は、モニタが切断されている間にWindowsの[解像度]ウィンドウを使用してデバイスを検出し、[別のディスプレイが接続されていません]と表示するディスプレイを選択します。選択したポートタイプで信号をモニタにブロードキャストし(信号は対話式ではありません)、ディスプレイに接続して送信された信号を正しく解釈します。
強制的な解像度は画面の検出を無効にし、スリープ中も持続します。
Windows 8.1とMacbook Air 2013(Intel HD Graphics 5000)でも同じ問題があります。私は全部やってみる。最後に私は私のグラフィックカード用の最新のドライバで更新されたIntelに行きました、そして問題は続きます。それから、グラフィックディスプレイのプロパティに行き、2台目のディスプレイをマルチディスプレイでオンにして「Disconnect this display」を選択します。これがあなたのために働くことを願っています。
私にとっては、修正は https://superuser.com/a/908156/238666 でした。概要:Windowsはウェイクアップ時にモニタからEDID情報を読み込めません。Nvidiaのコントロールパネルで、タスク:ワークステーション、ビューシステムの下でEDID情報をファイルに保存し、そのファイルから読み込むように設定できます。トポロジ、EDIDソース.
私の限定的な見方では、根本的な問題はNvidiaカードだけでなく、Windows、DisplayPort、またはモニター(Lenovo X1 4K)でもあります。
私はこの小さなアプリケーションで解決しました:
https://github.com/hunkydoryrepair/MonitorKeeper/releases
実行するだけで、ウィンドウを同じ位置に維持できます。
ありがとう。@ hunkydoryrepair。