SendMessageTimeoutA 関数 (winuser.h)

指定したメッセージを 1 つ以上のウィンドウに送信します。

構文

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

パラメーター

[in] hWnd

型: HWND

ウィンドウ プロシージャがメッセージを受信するウィンドウのハンドル。

このパラメーターが ((HWND)0xffff ) HWND_BROADCASTの場合、メッセージは、無効または非表示の未所有ウィンドウを含む、システム内のすべての最上位ウィンドウに送信されます。 関数は、各ウィンドウがタイムアウトするまで戻りません。したがって、合計待機時間は、 uTimeout の値に最上位ウィンドウの数を掛けた値までです。

[in] Msg

型: UINT

送信されるメッセージ。

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

[in] wParam

型: WPARAM

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

[in] lParam

型: LPARAM

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

[in] fuFlags

型: UINT

この関数の動作。 このパラメーターには、次の 1 つ以上の値を指定できます。

説明
SMTO_ABORTIFHUNG
0x0002
この関数は、受信スレッドが応答しない、または "ハング" した場合に、タイムアウト期間が経過するのを待たずに を返します。
SMTO_BLOCK
0x0001
関数が返されるまで、呼び出し元のスレッドが他の要求を処理できないようにします。
SMTO_NORMAL
0x0000
呼び出し元のスレッドは、関数が返されるのを待っている間、他の要求を処理できません。
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
関数は、受信スレッドがメッセージを処理している限り、タイムアウト期間を強制しません。
SMTO_ERRORONEXIT
0x0020
メッセージの処理中に受信ウィンドウが破棄されるか、その所有スレッドが終了した場合、関数は 0 を返す必要があります。

[in] uTimeout

型: UINT

タイムアウト期間の期間 (ミリ秒単位)。 メッセージがブロードキャスト メッセージの場合、各ウィンドウで完全なタイムアウト期間を使用できます。 たとえば、5 秒のタイムアウト期間を指定し、メッセージの処理に失敗する最上位のウィンドウが 3 つある場合、最大で 15 秒の遅延が発生する可能性があります。

[out, optional] lpdwResult

種類: PDWORD_PTR

メッセージ処理の結果。 このパラメーターの値は、指定されたメッセージによって異なります。

戻り値

型: LRESULT

関数が成功すると、戻り値は 0 以外になります。 HWND_BROADCASTが使用されている場合、SendMessageTimeout は個々ウィンドウのタイムアウトに関する情報を提供しません。

関数が失敗した場合、またはタイムアウトした場合、戻り値は 0 です。 詳細なエラー情報を得るには、GetLastError を呼び出します。 GetLastError からERROR_TIMEOUTが返された場合、関数はタイムアウトになります。

Windows 2000: GetLastError が 0 を返す場合、関数はタイムアウトしました。

解説

この関数は、指定したウィンドウのウィンドウ プロシージャを呼び出し、指定したウィンドウが別のスレッドに属している場合、ウィンドウ プロシージャがメッセージを処理するか、指定したタイムアウト期間が経過するまで戻りません。 メッセージを受信するウィンドウが現在のスレッドと同じキューに属している場合、ウィンドウ プロシージャが直接呼び出されます。タイムアウト値は無視されます。

この関数は、 スレッドが GetMessage または同様の関数を 5 秒以内に呼び出していない場合、応答していないと見なします。

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

注意

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

要件

   
サポートされている最小のクライアント 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 で導入)

関連項目

概念

GetMessage

InSendMessage

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

PostMessage

リファレンス

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage