2009-05-14 5 views
1

私は少しの検索をしましたが、探していたものに似たものは見つかりませんでした。私は、C#を使用して二次/三次モニターやプロジェクターに異なる内容を表示する方法を知りたいと思っています。基本的に、私が達成したいのは、特定の画面(プライマリディスプレイ)にプレゼンタービュー(Power Point)を用意し、セカンダリスクリーンまたはプロジェクターに出力することです。私は本当に複数のディスプレイ出力を持つものを開発しようとは決してしていないので、どんな指針もかなり明白なレベルになければならないでしょう。プロジェクターコントロール/ディスプレイC#

もし誰かがC#でこの種のことを処理する方法について正しい方向で私を指すことができたら、それは非常に感謝します!

答えて

2

プロパティSystem.Windows.Forms.Screen.AllScreensを使用すると、Windowsが知っているすべてのモニタの一覧にアクセスできます。ユーザーが設定していないディスプレイを利用しようとする場合は、難しくなります。DirectXを使用してディスプレイアダプタを初期化してアクセスする必要があります。

+0

関連するサブ質問の方法として、1つのディスプレイにフルスクリーン出力を表示し、別のディスプレイにコントロールを保持するにはどうすればよいですか?私はマルチモニタの設定で他のフルスクリーンアプリケーションを使用していることを知っています。他の場所をクリックしようとすると、フルスクリーンアプリケーションがフォーカスを失い、自分自身を最小限に抑えることになります。これを回避するにはどうすればよいですか、これはあなたが説明したアプローチの問題ではありませんか? (現時点ではテストできません) –

+2

最も簡単な方法は、全画面ウィンドウを作成し、AllScreensコレクションの情報を使用してTopMostに設定することです。それで、従来は単一モニタのフルスクリーンアプリケーションで問題を抱えていませんでした(フォーカスの喪失で自分自身を最小限に抑えています)。 –

+0

おかげで、私はこれを試してみましょう:) –

1

あなたが対話する必要がある主なクラスの1つはScreenです(これはWinFormsネームスペースにあります)。一般に、すべての画面は、画面クラスを使用してそれぞれのプロパティを取得できる一連の作業領域として扱われます。

あなたはこのようなすべての画面を得ることができる...

Screen [] screens = Screen.AllScreens; 

Hereは、C#でマルチモニタのプログラミングを行うことについての短い記事です。

3

Kevenの答えを展開すると(私が+1した)、Screen.AllScreens配列にはScreenオブジェクトの配列があります。 Screenオブジェクトには、プライマリ画面とセカンダリ(duh)を判別するために使用できるIsPrimaryというプロパティがあり、WorkingAreaというプロパティもあります.WorkAreaというプロパティは、すべての座標を返す長方形です。 2番目の画面。これについての素晴らしい点は、セカンダリ画面がプライマリの左側にあるように設定されていても、WorkingArea.Xは負の数になり、そこにフォームを置くことができるということです。