PostMessageW

指定したウィンドウを作成したスレッドのメッセージキューにメッセージを投稿(ポスト)し、スレッドがメッセージを処理するのを待たずに戻る。(Unicode)

PostMessageW hWnd, Msg, wParam, lParam

hWnd : [intptr] 型: HWND メッセージを受け取るウィンドウプロシージャのウィンドウへのハンドル。次の値は特別な意味を持つ。
Msg : [int] 型: UINT 投稿するメッセージ。システム定義メッセージの一覧は System-Defined Messages を参照。
wParam : [intptr] 型: WPARAM メッセージ固有の追加情報。
lParam : [intptr] 型: LPARAM メッセージ固有の追加情報。

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

解説

指定したウィンドウを作成したスレッドのメッセージキューにメッセージを投稿(ポスト)し、スレッドがメッセージを処理するのを待たずに戻る。(Unicode)

[戻り値]
型: BOOL 関数が成功した場合、戻り値は 0 以外。失敗した場合は 0。拡張エラー情報を得るには GetLastError
を呼び出す。

[備考]
UIPI によりメッセージがブロックされた場合、GetLastError で取得される最終エラーは 5 (access denied)
に設定される。メッセージキュー内のメッセージは GetMessage または PeekMessage
で取得される。HWND_BROADCAST を使った通信を行うアプリケーションは、アプリケーション間通信用の一意なメッセージを得るために
RegisterWindowMessage を使うべきである。システムはシステムメッセージ(0~WM_USER-1
の範囲)についてのみマーシャリングを行う。他のメッセージ(WM_USER
以上)を別プロセスへ送るにはカスタムマーシャリングが必要。WM_USER
未満のメッセージを非同期メッセージ関数(PostMessage、SendNotifyMessage、SendMessageCallback)で送る場合、メッセージパラメータにポインタを含めてはならない。さもなければ操作は失敗する。これらの関数は受信スレッドがメッセージを処理する前に戻り、送信側は使用される前にメモリを解放してしまう。WM_QUIT
を PostMessage で投稿してはならない。代わりに PostQuitMessage を使うこと。アクセシビリティアプリケーションは
PostMessage でシェルに WM_APPCOMMAND
メッセージを投稿しアプリケーションを起動できる。これは他のタイプのアプリケーションで動作する保証はない。メッセージキューあたりの投稿メッセージ数は
10,000
に制限される。この上限は十分大きいはずである。上限を超える場合、そのアプリケーションはシステムリソースの消費を避けるよう再設計すべきである。この上限を調整するには次のレジストリキーを編集する。HKEY_LOCAL_MACHINE
SOFTWARE Microsoft Windows NT CurrentVersion Windows
USERPostMessageLimit 失敗時は GetLastError を呼ぶ。上限に達した場合、GetLastError は
ERROR_NOT_ENOUGH_QUOTA を返す。許容可能な最小値は 4000。

情報

プラグイン / モジュール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