外部ディスプレイの切断と再接続のサイクル中に開いているウィンドウを維持するにはどうすればよいですか?

外部ディスプレイの切断と再接続のサイクル中に開いているウィンドウを維持するにはどうすればよいですか?

外部ディスプレイ (プロジェクター) を拡張モードで使用しています。切断して再接続すると、すべてのウィンドウがメイン ディスプレイに表示され、拡張ディスプレイは空になります。切断と再接続のサイクルの間、すべてのウィンドウを外部ディスプレイに表示したままにしておきたいです。

背景: プレゼンテーションを配信しており、プロジェクター入力は HDMI スイッチを介して行われるため、プロジェクターに別のフィードを表示できます。PC から切り替えると、Windows はそれをディスプレイの切断と見なし、ウィンドウを再配置します。PC に戻ると、プレゼンテーションが消えてしまい、元の場所に戻るためにウィンドウを移動する必要があります。よくある問題のようですが、今のところ、私にとって有効な解決策は見つかっていません。

関連するさまざまな質問を確認しましたが、ほとんどはモニターがスリープ状態になった後にウィンドウが再配置されることに関するものでした (問題は異なりますが、根本原因は同じです)。しかし、解決策がうまくいきません。以下は私が検討しているすべてのオプションです。理想的には、確実に機能する解決策を誰かが共有してくれるのですが、それができない場合は、以下からいくつかのオプションを除外していただければ助かります。

1) Windows での自動ディスプレイ検出を無効にします。

a)私が読んだ方法の 1 つは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TMM で UselViewHelper を 0 に設定することです。これは次の場所で提案されています: https://www.reddit.com/r/Amd/comments/5jlk82/how_to_prevent_windows_from_rearranging_when/ 私の場合はうまくいきませんでした。試してみて、再起動すると、PC は以前と同じように動作します。

b)どこかで読んだのですが、Windows はケーブルが差し込まれている限り、VGA ポートから取り外されたモニターを自動検出しません。VGA ダミー スティックを使用する意味がないので、説得力がありませんが、試してみます。VGA ポートがないので、VGA から HDMI へのコンバーターを注文しました。

2) 外部ディスプレイをシミュレートする

仮想外部ディスプレイを追加できれば、拡張デスクトップを 2 つの外部ディスプレイ (プロジェクターと仮想ディスプレイ) にミラーリングするセットアップが可能になります。その後、ミラーリングされた 2 つのディスプレイの 1 つを切断して再接続しても、ウィンドウが再配置されなくなります。ここでの最初の問題は、拡張デスクトップを複製できるかどうかさえわからないことです。

2 番目の問題は仮想ディスプレイを追加することですが、そのために私はさまざまなオプションを検討しました。

a)HDMIからVGA、次にVGAスプリッター、そしてVGAダミースティック。これは最初の問題を回避できるので、比較的確実なはずです。Windowsは2番目と3番目のディスプレイをミラーリングする必要はありません。

b)USB から VGA へ。VGA ポートにディスプレイが接続されていることを Windows に通知できない場合に備えて、ダミー スティックを使用する可能性があります (アダプターを注文したので、これをテストできます)

c)モバイル アプリを使用してディスプレイを携帯電話に拡張します。例: https://play.google.com/store/apps/details?id=com.devguru.eltwomonusb&hl=es したがって、この場合はゴースト ディスプレイではなく実際のデバイスになりますが、解像度は一致しない可能性があり、非正統的なアプローチのため、他の問題も発生する可能性があります。

d)ソフトウェアを使用してディスプレイを別の PC または他のデバイスに送信します。これは、Windows Connect、iDisplay、Airscreen、Splashtop Extended Desktop、またはその他のツールで実行できると言われています。これにより、仮想ディスプレイではなく実際の追加ディスプレイが作成されます。ケーブルで接続されないだけです。

3) 設定をいじってみるHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration

ここで、また他の場所で示唆されているように: スリープ解除後にウィンドウの再配置を停止するにはどうすればよいですか?

オンラインで説明されているような SIMULATED エントリはありませんでしたが、同様の機能を果たす可能性のある MSNILNOEDID がありました。ラップトップの画面 (HHT00301...) のエントリが 1 つ、プロジェクター (BOE06F90...) のエントリが 12 個ほどあります。他の回答で示されているように、すべて設定されているようです。ラップトップの画面は 3840x2160、プロジェクター エントリと (おそらく) シミュレートされたものは 1920x1080 です。

4) HDMI スイッチを使用して、PC にディスプレイがまだ接続されていると思わせる。

そのようなデバイスが存在するかどうかはわかりませんし、存在するとしても、どうやって見つけるかもわかりません。

5) プロジェクターが切断されている間に、カスタム ソフトウェア ソリューションを使用して外部ディスプレイをシミュレートします。

ここでそのような解決策の 1 つを見つけました:https://archive.codeplex.com/?p=persistentwindows プロジェクトは中止されましたが、コードをダウンロードできました。幸い、これは .NET アプリであり、私は .NET 開発者ですが、かなりの作業が必要そうです。すぐにはビルドできず、複雑そうで、実際に動作するかどうかはまったく検証されていません。

答え1

最新の拡張機能をお試しください永続的なウィンドウ

免責事項:私は拡張機能の貢献者です

答え2

答えはオプション1. b) VGA出力を使用する

HDMI-VGA アダプタを挿入すると、Windows はそれを外部モニタとして認識し、デスクトップを拡張します。その後、外部モニタを好きなだけ接続したり切断したりすることができ、開いているウィンドウはそのまま残ります (または、私の場合は、HDMI スイッチを使用してこのビデオ フィードから切り替えて、また戻ることができます)。

そのため、HDMI 出力から HDMI スイッチに直接接続する代わりに、VGA-HDMI ケーブルに接続された HDMI-VGA アダプターを使用します。かなりばかげているしローテクに聞こえますが、これは機能しており、Microsoft がこのディスプレイ自動検出機能を無効にする信頼性の高い方法を追加するまでは、このままの状態が続くと思われます。

関連情報