2009-08-20 5 views
4

ではないアプリケーションを(マルチスレッドシステムの別の画面に)のアプリケーション(考えてみてください。これを行うには、ウィンドウまたはプロセスハンドルに送信できる特定のWindowsメッセージコードがありますか?Cを使用して特定の画面にアプリケーションを送信する

+0

「現在のアプリケーションではない」という質問を編集すると、混乱することがあります。あるアプリケーションが別のアプリケーションの場所を制御することを意味しますか? –

+0

明確にするために私の質問を編集しました。私が書いているものではなく、サードパーティのアプリケーションを意味するので、私はソースコードを制御できません。 – Alex

答えて

1

P/InvokeとMoveWindow関数を使いたいと思うでしょう。

編集:それはちょうど罰金複数の画面を処理します。 MoveWindowは画面を1つの大きなディスプレイとして見て、それに応じて引数をとります。 .Net Screenクラスを使用して、必要な画面の境界を見つけて、MoveWindowを呼び出して、必要な場所にウィンドウを取得できます。

また、気づいていない場合は、おそらくプロジェクトにFindWindowByCaption機能が必要になる可能性があります。

+0

私はこのことについて知りませんでした - それは複数の画面を処理するのですか? –

1

私はこれを試していないが、どのようにWM_MOVEの使用について決してきましたか? SendMessage機能を使用すると、必要なメッセージを送信できます。 C#を使用して質問をマークしたので、p/invokeを使用してそれを使用する必要があります。ここにはexampleがあります。

スクリーンの位置とサイズを取得する方法については、.NETライブラリのScreenクラスを参照してください。 FromHandle()という1つの関数と、ユーザーが持つすべての有効な画面の配列を返すAllScreensというプロパティがあります。 FromHandle()は、アプリが現在最も占有している画面を教えてくれます(これはあなたの場合には有用かもしれません)。これにより、そのアプリケーションにメッセージを送信する前に、サードパーティアプリケーションの目的の場所を計算することができます。

関連する問題