SendMessageW 関数 (winuser.h)

指定したメッセージをウィンドウまたはウィンドウに送信します。 SendMessage 関数は、指定したウィンドウに対してウィンドウ プロシージャを呼び出し、ウィンドウ プロシージャがメッセージを処理するまで戻りません。

メッセージを送信してすぐに返すには、 SendMessageCallback または SendNotifyMessage 関数を使用します。 スレッドのメッセージ キューにメッセージを投稿してすぐに返すには、 PostMessage 関数または PostThreadMessage 関数を使用します。

構文

LRESULT SendMessageW(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);

パラメーター

[in] hWnd

型: HWND

ウィンドウ プロシージャがメッセージを受信するウィンドウへのハンドル。 このパラメーターが ((HWND)0xffff) HWND_BROADCAST 場合、メッセージは、無効または非表示の未所有ウィンドウ、重複したウィンドウ、ポップアップ ウィンドウなど、システム内のすべての最上位ウィンドウに送信されます。メッセージは子ウィンドウに送信されません。

メッセージ送信は UIPI の対象です。 プロセスのスレッドは、整合性レベルが低いか等しいプロセス内のスレッドのメッセージ キューにのみメッセージを送信できます。

[in] Msg

型: UINT

送信されるメッセージ。

システム提供のメッセージの一覧については、「 システム定義メッセージ」を参照してください。

[in] wParam

型: WPARAM

追加のメッセージ固有情報。

[in] lParam

型: LPARAM

追加のメッセージ固有情報。

戻り値

型: LRESULT

戻り値は、メッセージ処理の結果を指定します。送信されたメッセージによって異なります。

注釈

メッセージが UIPI によってブロックされると、 GetLastError で取得された最後のエラーは 5 (アクセス拒否) に設定されます。

HWND_BROADCASTを使用して通信する必要があるアプリケーションでは、RegisterWindowMessage 関数を使用して、アプリケーション間通信用の一意のメッセージを取得する必要があります。

システムは、システム メッセージ (0 ~ (WM_USER-1) の範囲) に対してのみマーシャリングを実行します。 他のメッセージ (これらの >= WM_USER) を別のプロセスに送信するには、カスタム マーシャリングを実行する必要があります。

指定されたウィンドウが呼び出し元のスレッドによって作成された場合、ウィンドウ プロシージャはサブルーチンとしてすぐに呼び出されます。 指定されたウィンドウが別のスレッドによって作成された場合、システムはそのスレッドに切り替え、適切なウィンドウ プロシージャを呼び出します。 スレッド間で送信されたメッセージは、受信スレッドがメッセージ取得コードを実行する場合にのみ処理されます。 送信側スレッドは、受信スレッドがメッセージを処理するまでブロックされます。 ただし、送信側のスレッドは、メッセージが処理されるのを待っている間に、キューに登録されていない受信メッセージを処理します。 これを防ぐには、SMTO_BLOCK設定で SendMessageTimeout を使用します。 非キュー メッセージの詳細については、「非 キュー メッセージ」を参照してください。

アクセシビリティ アプリケーションは SendMessage を 使用して 、WM_APPCOMMAND メッセージをシェルに送信してアプリケーションを起動できます。 この機能は、他の種類のアプリケーションで動作することは保証されていません。

例については、「 キーボード入力の表示」を参照してください。

注意

winuser.h ヘッダーは SendMessage をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-message-l1-1-0 (Windows 8で導入)

関連項目

概念

InSendMessage

メッセージとメッセージ キュー

PostMessage

PostThreadMessage

リファレンス

RegisterWindowMessage

SendDlgItemMessage

SendMessageCallback

SendMessageTimeout

SendNotifyMessage