2012-01-21 6 views
3

ディスプレイがクローンされている場合、1つのディスプレイにのみアプリケーションを表示することはできますか?私の目標は、プレゼンテーション中にノートパソコンのディスプレイに表示されるが、プロジェクタには表示されないタイマーを開発することです。2台のクローンディスプレイのうち1台にのみプレゼンテーションタイマーを表示

私はWindowsの "Identify displays"機能のようなものを探しています。これは、クローンモードでも、さまざまなディスプレイに数字1と2を表示します。

おかげ

編集

私はこの質問へpossible duplicateを発見しました。この場合の回答は、Screens.AllScreensを使用して画面数を検出することでした。私の場合、これでは不十分です。受け入れられた回答のコメントは、directly painting on the desktopについてのスレッドへのリンクです。私は次のコードでこれを試しましたが、テキストが両方のディスプレイに表示されました。入力のHdcを取得するコードは、screen capturesについての記事からです。私は

[DllImport("gdi32.dll")] 
static extern IntPtr CreateDC(IntPtr lpszDriver, string lpszDevice, IntPtr lpszOutput, IntPtr lpszInitData); 

[DllImport("gdi32.dll")] 
static extern IntPtr DeleteDC(IntPtr hdc); 

private void PaintOnDesktop(string stringToPrint, Font font, Brush brush, PointF position) { 
    string deviceName = Screen.AllScreens[0].DeviceName; 
    IntPtr targetHdc = CreateDC(IntPtr.Zero, deviceName, IntPtr.Zero, IntPtr.Zero); 
    using (Graphics g = Graphics.FromHdc(targetHdc)) { 
     g.DrawString(stringToPrint, font, brush, position); 
    } 
    DeleteDC(targetHdc); 
} 

編集2

はどうやらC#でこれを実行する方法はありません(彼らは記事にIntPtr.Zeroをしている)他のパラメータのために何を設定するかわからないので、私C#タグをデバイスドライバに変更しました。

+0

私はusermodeでこれを行う方法が絶対にないと思う。たとえ可能であっても、ディスプレイドライバをハックする必要があります。とにかく、ユーザーの設定に違反することは悪い考えです。あなたが本当に望むのは、非クローンモードに一時的に切り替えて戻すことでしょうか? –

+0

ご返信ありがとうございます。私は、クローンと非クローンの間の切り替えが可能ではないと思います。私は毎秒更新するラップトップ画面にタイマーを持っていたいと思います。私はこれが極端なちらつきにつながると思う。 ドライバーをどのように直接使うことができますか?ディスプレイ全体にアプリケーション全体を印刷する必要はありません。テキストを印刷することもOKです。 – Flogo

+0

あなたが何をしているのか分かります。本当に親切なのは、それをクローンとして残すことです。あなたはこれを行う方法を見つけることができますが、計画Bの準備ができていることを願っています。(いいえ、カスタムディスプレイドライバでこれをどうやって行うのか分かりません) –

答えて

1

この効果を達成する唯一の方法は、画面を「手動で」、つまりドライバのこの機能を利用しないで「遅らせる」ことです。 UltraMonには、マルチモニタクローニングをサポートしていないビデオカードやOS用に設計された、このような機能があります。基本的には、デスクトップをすばやくスクリーンショットし、別の(拡張された)モニター上にフォームで表示することによって行われます。

誘導の遅れは、モニタの1つにしか表示されないので、プレゼンテーションの場合は、あなたのラップトップの受信者に「自分の」モニタ(おそらくノートパソコンのプライマリモニタ)観客はそれを見ない。もちろん、いずれの画面の上にもタイマーフォームを描くことができます。

+0

あなたの答えをありがとう。私はまだ誰かがドライバーを介してこれを達成するためのいくつかの情報を追加できることを願っています。これははるかにクリーンなオプション、私はそれを見る方法でしょう。私はそれが可能でなければならないと思います.Windowsのダイアログがそれをするからです。たぶん、私はC#タグを削除する必要がありますか? – Flogo

関連する問題