プラットフォーム SDK
SendMessage
1 つまたは複数のウィンドウへ、指定されたメッセージを送信します。この関数は、指定されたウィンドウのウィンドウプロシージャを呼び出し、そのウィンドウプロシージャがメッセージを処理し終わった後で、制御を返します。
メッセージを送信して即座に制御を返すには、SendMessageCallback または SendNotifyMessage 関数を使ってください。メッセージを 1 つのスレッドのメッセージキューにポストして即座に制御を返すには、PostMessage または PostThreadMessage 関数を使ってください。
|
LRESULT SendMessage(
HWND hWnd, // 送信先ウィンドウのハンドル
UINT Msg, // メッセージ
WPARAM wParam, // メッセージの最初のパラメータ
LPARAM lParam // メッセージの 2 番目のパラメータ
); |
パラメータ
- hWnd
- 1 つのウィンドウのハンドルを指定します。このウィンドウのウィンドウプロシージャがメッセージを受信します。HWND_BROADCAST を指定すると、この関数は、システム内のすべてのトップレベルウィンドウ(親を持たないウィンドウ)へメッセージを送信します。無効になっている所有されていないウィンドウ、不可視の所有されていないウィンドウ、オーバーラップされた(手前にほかのウィンドウがあって覆い隠されている)ウィンドウ、ポップアップウィンドウも送信先になります。子ウィンドウへはメッセージを送信しません。
- Msg
- 送信するべきメッセージを指定します。
- wParam
- メッセージ特有の追加情報を指定します。
- lParam
- メッセージ特有の追加情報を指定します。
戻り値
メッセージ処理の結果が返ります。この戻り値の意味は、送信されたメッセージにより異なります。
解説
HWND_BROADCAST フラグを使って通信を行う必要がある複数のアプリケーションは、アプリケーション間通信の専用メッセージを取得する目的では、RegisterWindowMessage 関数を呼び出すべきです。
指定されたウィンドウが、呼び出し側スレッドが作成したものであった場合、そのウィンドウのウィンドウプロシージャがサブルーチンとして即座に呼び出されます。指定されたウィンドウが、他のスレッドが作成したものであった場合、システムはそのスレッドへの切り替えを行い、次に適切なウィンドウプロシージャを呼び出します。複数のスレッド間で送信されたメッセージが処理されるのは、受信側スレッドがメッセージ取得コードを実行したときだけです。送信側スレッドは、受信側スレッドがメッセージの処理を終えるまで、ブロックされます(待機状態になります)。
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装
参照
InSendMessage, PostMessage, PostThreadMessage, RegisterWindowMessage SendDlgItemMessage, SendMessageCallback, SendNotifyMessage