SendMessageW

指定したメッセージをウィンドウ(群)に送信する。SendMessage は指定ウィンドウのウィンドウプロシージャを呼び出し、メッセージ処理が完了するまで戻らない。(SendMessageW)

SendMessageW hWnd, Msg, wParam, lParam

hWnd : [intptr] 型: HWND メッセージを受け取るウィンドウプロシージャのウィンドウへのハンドル。HWND_BROADCAST ((HWND)0xffff) を指定すると、メッセージはシステム内のすべてのトップレベルウィンドウ(無効または非表示の非所有ウィンドウ、オーバーラップウィンドウ、ポップアップウィンドウを含む)に送信されるが、子ウィンドウには送信されない。メッセージ送信は UIPI の対象。プロセスのスレッドは同等以下の整合性レベルのプロセスのスレッドメッセージキューにのみメッセージを送信できる。
Msg : [int] 型: UINT 送信するメッセージ。システム定義メッセージの一覧は System-Defined Messages を参照。
wParam : [intptr] 型: WPARAM メッセージ固有の追加情報。
lParam : [intptr] 型: LPARAM メッセージ固有の追加情報。

(プラグイン / モジュール : user32.dll)

解説

指定したメッセージをウィンドウ(群)に送信する。SendMessage
は指定ウィンドウのウィンドウプロシージャを呼び出し、メッセージ処理が完了するまで戻らない。(SendMessageW)

[戻り値]
型: LRESULT 戻り値はメッセージ処理の結果を表し、送信したメッセージに依存する。

[備考]
UIPI によりメッセージがブロックされた場合、GetLastError で取得される最終エラーは 5 (access denied)
に設定される。HWND_BROADCAST を使った通信を行うアプリケーションは、アプリケーション間通信用の一意なメッセージを得るために
RegisterWindowMessage を使うべきである。システムはシステムメッセージ(0~WM_USER-1
の範囲)についてのみマーシャリングを行う。他のメッセージ(WM_USER
以上)を別プロセスへ送るにはカスタムマーシャリングが必要。指定ウィンドウが呼び出しスレッドで作成されたものであればウィンドウプロシージャはサブルーチンとして直ちに呼ばれる。別スレッドで作成されたものであれば、システムはそのスレッドに切り替えて適切なウィンドウプロシージャを呼ぶ。スレッド間で送られたメッセージは受信スレッドがメッセージ取得コードを実行したときに初めて処理される。送信スレッドは受信スレッドがメッセージを処理するまでブロックされる。ただし送信スレッドは処理待ちの間、着信ノンキューメッセージを処理する。これを防ぐには
SMTO_BLOCK を指定した SendMessageTimeout を使う。ノンキューメッセージの詳細は Nonqueued
Messages を参照。アクセシビリティアプリケーションは SendMessage でシェルに WM_APPCOMMAND
メッセージを送信しアプリケーションを起動できる。これは他のタイプのアプリケーションで動作する保証はない。

情報

プラグイン / モジュールuser32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の user32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_user32_gen2.hs