マルチスクリーン システムの別の画面に、自分のアプリケーション (サード パーティのアプリ)ではないアプリケーション(WM_ メッセージと考えてください) を送信するにはどうすればよいですか? これを行うためにウィンドウまたはプロセス ハンドルに送信できる特定の Windows メッセージ コードはありますか?
2 に答える
P/InvokeとMoveWindow関数を使用することをお勧めします。
編集:複数の画面を問題なく処理します。 MoveWindow
画面を1つの大きなディスプレイと見なし、それに応じて引数を取ります。.Net Screenクラスを使用して、目的の画面の境界を見つけてから、を呼び出しMoveWindow
て目的のウィンドウを取得できます。
また、気づかなかった場合は、プロジェクトにもこのFindWindowByCaption
関数が必要になる可能性があります。
私はこれを試したことはありませんが、WM_MOVEを使用するのはどうですか? SendMessage関数を使用すると、必要なメッセージを送信できます。質問を C# を使用しているとマークしたので、それを使用するには p/invoke を使用する必要があります。ここに例があります。
画面の位置とサイズの取得については、.Net ライブラリのScreenクラスを参照してください。FromHandle()と呼ばれる 1 つの関数と、ユーザーが持つすべての有効な画面の配列を返すAllScreensと呼ばれるプロパティがあります。FromHandle() は、アプリが現在最も占有している画面を教えてくれます (これは、あなたの場合には役立つかもしれませんし、役に立たないかもしれません)。これにより、サードパーティ アプリケーションにメッセージを送信する前に、そのアプリケーションの目的の場所を計算できます。