4

マルチスクリーン システムの別の画面に、自分のアプリケーション (サード パーティのアプリ)ではないアプリケーション(WM_ メッセージと考えてください) を送信するにはどうすればよいですか? これを行うためにウィンドウまたはプロセス ハンドルに送信できる特定の Windows メッセージ コードはありますか?

4

2 に答える 2

1

P/InvokeとMoveWindow関数を使用することをお勧めします。

編集:複数の画面を問題なく処理します。 MoveWindow画面を1つの大きなディスプレイと見なし、それに応じて引数を取ります。.Net Screenクラスを使用して、目的の画面の境界を見つけてから、を呼び出しMoveWindowて目的のウィンドウを取得できます。

また、気づかなかった場合は、プロジェクトにもこのFindWindowByCaption関数が必要になる可能性があります。

于 2009-08-20T22:05:40.957 に答える
1

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

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

于 2009-08-20T21:57:51.113 に答える