SendMessage(A)

ウィンドウにメッセージを送信します。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返しません。

メッセージを送信して直ちに制御を返すには、 SendMessageCallback 関数または SendNotifyMessage 関数を使います。メッセージをスレッドのメッセージキューにポストして直ちに制御を返すには、 PostMessage 関数または PostThreadMessage 関数を使います。

LRESULT SendMessageA(
    HWND   hWnd,    // ウィンドウハンドル
    UINT   Msg,     // メッセージコード
    WPARAM wParam,  // wParamパラメータ
    LPARAM lParam   // lParamパラメータ
);

USER32.DLL

引数

hWnd

メッセージを受け取るウィンドウのハンドルを指定します。0xFFFF (HWND_BROADCAST) を指定すると、すべてのトップレベルウィンドウに送られます。

0xFFFF (HWND_BROADCAST) を指定すると、システムにあるすべてのトップレベルウィンドウに送られます。子ウィンドウに対してはメッセージはメッセージは送られません。

Msg

送信されるメッセージコードを指定します。

wParam

メッセージ固有情報(ウィンドウプロシージャの wParam パラメータ)を指定します。

lParam

メッセージ固有情報(ウィンドウプロシージャの lParam パラメータ)を指定します。

戻り値

メッセージ処理の結果(ウィンドウプロシージャの戻り値)が返ります。戻り値は送られたメッセージによって異なります。

解説

Msg パラメータに HWND_BROADCAST を指定して通信を行なう場合は、相互のアプリケーション間における通信のためのユニークなメッセージを取得するのに、 RegisterWindowMessage を使用するべきです。

指定されたウィンドウが呼び出しスレッドによって作成されている場合、ウィンドウプロシージャが直接呼び出されます。呼び出しスレッドと異なるスレッドによって作成されたウィンドウが指定された場合、システムはそのスレッドに切り替えて適切なウィンドウプロシージャを呼び出します。このとき、受信側スレッドがメッセージを処理するまで送信側スレッドの実行は停止されます。ただし、メッセージ処理を待つ間でも、送信側スレッドは自身に送られてきたキューイングされないメッセージは処理されます。これを防ぐには SendMessageTimeout 関数呼び出しで SMTO_BLOCK フラグを指定します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降