SendMessage

機能
指定のウィンドウにメッセージを送る
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal MSG As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Integer, ByVal MSG As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer) As Integer

LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
引数
hWnd

メッセージを受け取るウィンドウのハンドル
HWND_BROADCAST(=&HFFFF&)のとき、すべてのトップレベルウィンドウに送る
MSG
メッセージを指定する定数(メッセージを参照)
wParam
メッセージとともに送るパラメータ
lParam
同上
戻り値
メッセージの種類によって戻り値は異なる
備考
この関数は、メッセージの送り先のウィンドウ関数に直接メッセージを送る。
ウィンドウがメッセージを処理し終わるまで関数は戻らない。
これでは不都合な場合はPostMessage()関数の方が適当である。


この関数は渡すパラメータによって宣言を変えて使われることが多い。
例えば文字列を渡したいときには
Declare Function SendMessageStr lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal MSG As Long, _
ByVal wParam As Long, ByVal lParam As String) As Long

構造体を渡したいときには
Declare Function SendMessageStruct lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal MSG As Long, _
ByVal wParam As Long, lParam As POINTAPI) As Long
などである。
基本的にSendMessageで送れるのはLong型の値だけである。
文字列や構造体を送れるのは、その変数のポインタ(メモリアドレス)を
送っているからである。