web-dev-qa-db-ja.com

複数のモニター-ダイアログボックスの場所を制御する方法

私は2枚のデュアル出力Nvidiaグラフィックカードを備えた4台のモニターシステムで作業しています。さまざまなソフトウェアが、質問やメッセージを含むダイアログボックスをポップアップすることがあります。ダイアログボックスが常にソフトウェアのメインウィンドウと同じモニターに表示されるようにしたいと思いますが、表示されません。ダイアログボックスを配置するモニターをシステムに指示する方法はありますか?

6
Mick

アプリケーションによって異なるのが私の経験です。ダイアログボックスが常に「メイン」または「プライマリ」モニターにポップアップ表示されるように、システムコールを行うものもあります。他の人は、最後に解雇された場所で開きます。さらに他の人はアプリをフォローし、そのモニターで開きます。不整合はイライラするだけでなく、マルチモニターXPシステムを10年の大部分で使用してきましたが、それらを統合する方法に出くわしたことはありません。そのような不整合はMacに切り替えた多くの理由の1つ。

3
peelman

見つかったVBSスクリプトがあります ここ 「PositionDialogs」と呼ばれます。システムの起動時に実行すると、その後開いたダイアログが、親プログラムが実行されているモニターに移動します。

2
Shawn

AMDFireProマルチモニターカードを持っています。このカードは、デスクトップマネージャーを含むAMDのHydraVisionをサポートしています。使用可能なオプションの1つは、「アプリケーションの位置とサイズを保持する」です。また、「ダイアログの再配置を有効にする」のオプションもあり、「優先ディスプレイXに表示」または「アプリケーションのディスプレイに表示」に設定できます。

1
Don Honabach

@peelmanの答えを補足するだけです:

プログラムで複数のモニターをサポートするには、EnumDisplayMonitorsを呼び出して、モニターごとにコールバック関数を指定する必要があります。 (win32 apiでは、問題については...)

詳細については、 http://msdn.Microsoft.com/en-us/library/dd162610%28VS.85%29.aspx を参照してください。

0
bubu

私はWindows XPシステムでの作業でこれと同じ問題を抱えていました。私が見つけた回避策は AutoIt と呼ばれるスクリプト言語を使用することでした。-で作業するためのライブラリがあります 複数のモニター 。librayを使用してモニターを指定し、特定の基準(ウィンドウのタイトルやプロセス名など)に基づいてウィンドウを自動的に中央に配置できます。組み込み関数を使用して、正確な座標を指定することもできます。あなたが望む。

その基本は、特定のウィンドウを監視し、表示されたときにそれらを移動するループスクリプトをバックグラウンドに配置する必要があるということです。詳細が必要な場合は、オプションの例をいくつか示した一般的なスケルトンを提供できます。

0
MaQleod