web-dev-qa-db-ja.com

スリープからの復帰後にウィンドウの再配置を停止する方法

マルチモニタシステムを使用していないときはスリープ状態にします。目を覚ますと、すべてのウィンドウは別の画面に移動します。私が考えることができる最も近いパターンは、メインスクリーン上にあったウィンドウがセカンドスクリーンに切り替わることです。メイン画面がスリープ状態になる前に切断され、それによってすべてのウィンドウが2番目または3番目の画面に切り替わります。

編集:これが私が使っているビデオカードです - > SAPPHIRE FleX 100322FLEX Radeon HD 6450

112
Kingamoon

この問題はグラフィックドライバにある可能性が最も高いです。 1つのモニタがWindowsのマルチモニタ設定から切断されると、Windowsはその画面から残りの画面にすべてを移動しようとします。通常、これはコンピュータのサスペンド/休止状態/シャットダウン時には発生しません。したがって、それはおそらくグラフィックドライバが以下のいずれかを実行しているためです。

  • コンピュータをスリープ状態にしたときにモニタの接続を解除すると、Windowsが起動したときに、すべてを配置する場所を再決定する必要があります。
  • コンピュータのスリープを解除するたびに、モニタの認識順序が異なるため、Windowsはアプリケーションウィンドウを並べ替える必要があります。

チップセット製造元のWebサイトにアクセスして、グラフィックドライバが更新されているかどうかを確認してください。

33
Tanaki

これは古い質問ですが、同じ問題で誰かがここに到着した場合は、ここに掲載されている解決策を試してみることをお勧めします。

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

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つのモニタしか使用したことがありません。

44
John Freeman

お使いのコンピュータにIntel HDグラフィックが搭載されている場合は、Intelグラフィックコントロールパネルから[ディスプレイの拡張]オプション(および解像度設定)を設定する必要があります。 Windowsのディスプレイ設定から変更した場合は、スリープモードから復帰した後にリセットされます。

これがスクリーンショットです。

enter image description here

12
bytestorm

私はこれらの記事の からのアイデアを組み合わせることでこの問題の回避策を見つけたと思います

(私のPCはWindows 10 TH2、HDMIポートを備えたIntel HD4600、Changhong 4kモニターです)

これが手順です。

  1. ... GraphicDrivers\ConfigurationおよびGraphicDrivers\Connectivityの下にある余分なレジストリエントリをすべて削除し、自分のモニタに対応するエントリのみを残します(MST00301 ...)

  2. モニタをスリープ状態にする前に、単に "WIN" + "D"コンボキーを押してすべてのデスクトップウィンドウを最小化してください。

  3. モニタをオンにした後、もう一度 "WIN" + "D"と入力してすべてのウィンドウを元に戻します。

8
Kang

すべてのNVidiaカードがEDIDを偽造する機能をサポートしているわけではなく、この問題を引き起こしているのはスリープだけではありません。モニタの電源が切られたり、短時間切断されたりすると、慎重に設定された画面レイアウトに大きな損害を与える可能性があります。ここでの解決策のどれも私のためにうまくいかなかったので、私はモニターの数が変わったときにウィンドウの位置を元に戻すためのユーティリティを書きました。ソースコード はこちら で利用可能です。

2
Garr Godfrey

私の場合、3台の1920 x 1080モニターを水平に配置して、他の回答(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration)に記載されているレジストリキーに移動し、SIMULATEDで始まるキーを見つけ、そのキーの下の1920の値をすべて5760に変更します(1920×3、3台のモニターの場合)。

SIMULATEDキーはPCがスリープ状態に入るときに使用されると思いますが、実際のモニタがまだ自分自身を報告していない場合でも、Windowsはスリープ状態に入る/再開する過程でデスクトップを維持する必要があります。

2
wmassingham

通常、これはグラフィックドライバがスリープモードを適切にサポートしていないために、コンピュータがスリープ状態になったときに接続されたディスプレイを検出する機能が無効になっていることが原因で発生します。

問題を解決するために製造元からグラフィックドライバを更新します。

ドライバを更新しても問題が解決しない場合は、異常に報告されたディスプレイID(EDID)が原因である可能性があります。通常、グラフィックドライバのコントロールパネル内でモニタの検出を強制することができます。

これが利用できない場合は、モニタが切断されている間にWindowsの[解像度]ウィンドウを使用してデバイスを検出し、[別のディスプレイが接続されていません]と表示するディスプレイを選択します。選択したポートタイプで信号をモニタにブロードキャストし(信号は対話式ではありません)、ディスプレイに接続して送信された信号を正しく解釈します。

強制的な解像度は画面の検出を無効にし、スリープ中も持続します。

2
WinOutreach2

Windows 8.1とMacbook Air 2013(Intel HD Graphics 5000)でも同じ問題があります。私は全部やってみる。最後に私は私のグラフィックカード用の最新のドライバで更新されたIntelに行きました、そして問題は続きます。それから、グラフィックディスプレイのプロパティに行き、2台目のディスプレイをマルチディスプレイでオンにして「Disconnect this display」を選択します。これがあなたのために働くことを願っています。

2
arormoser

私にとっては、修正は https://superuser.com/a/908156/238666 でした。概要:Windowsはウェイクアップ時にモニタからEDID情報を読み込めません。Nvidiaのコントロールパネルで、タスク:ワークステーション、ビューシステムの下でEDID情報をファイルに保存し、そのファイルから読み込むように設定できます。トポロジ、EDIDソース.

私の限定的な見方では、根本的な問題はNvidiaカードだけでなく、Windows、DisplayPort、またはモニター(Lenovo X1 4K)でもあります。

1
Roland

私はこの小さなアプリケーションで解決しました:
https://github.com/hunkydoryrepair/MonitorKeeper/releases

実行するだけで、ウィンドウを同じ位置に維持できます。
ありがとう。@ hunkydoryrepair。

0
riofly