Last Update : 2007/04/xx
XREA.COMのs206サーバー内のサイトは、Yahoo!検索からペナルティを受け、検索結果で常に下位にランク付けされてしまうので、Yahoo!経由向けに用意したHSPミニ講座内のページです。このページは「http://lhsp.s206.xrea.com/hsp_sendmsg.html」の昔のものです。
ウィンドウ関連 || オブジェクト関連1 || オブジェクト関連2
sendmsg命令 (HSP 3.x)HSP3(HSP 3.x)の「sendmsg命令」の情報と、雑多なサンプルスクリプトを掲載してます。
sendmsg命令は、内部でWindows API(Win32 API)関数のSendMessage関数を呼び出してます。命令名の由来は、この関数名から来てるわけです。そのまま名前のごとく、「Message」(メッセージ)を「Send」(送信)する処理を行います。
ちなみに、HSP2(HSP 2.x)では同様の処理を行うobjsend命令が用意されていました(→ HSP 2.xのobjsend命令)。HSP3では単なる命令名の変更だけではなく、第1パラメータ(p1)の部分に仕様の変更があります。ちなみに、第5パラメータ(p5)は存在しません(HSP3.1のヘルプブラウザの説明は単なる誤記)。
命令 | p1 | p2 | p3 | p4 | p5 |
HSP3 sendmsg |
ウィンドウハンドル [ hwnd ] | メッセージID [WM_〜 など] |
wParam | lParam | なし |
オブジェクトのウィンドウハンドル [ objinfo(オブジェクトID, 2) ] |
|||||
HSP2 objsend |
ウィンドウID [ -28 ] | メッセージID [WM_〜 など] |
wParam | lParam | p4のタイプ |
オブジェクトID [ 0〜 ] |
HSP3のsendmsg命令には、4つのパラメータが存在します。
[1] 第1パラメータ
メッセージを送信する対象となる(1)ウィンドウのハンドル値、または(2)オブジェクトのウィンドウハンドル値を指定します。
HSPには、screen命令やbgscr命令に「ウィンドウID」、各種オブジェクトに「オブジェクトID」というものがあります。この数値はスクリプトから呼び出した順に0から始まりますが、あくまでHSPが特別に用意してくれてるものです。ウィンドウハンドルという値は内部識別番号のようなもので、(1)の自ウィンドウを識別する数値「ウィンドウハンドル」はHSPのシステム変数「hwnd」で取得できます。そして、(2)のオブジェクトを識別する数値「オブジェクトのウィンドウハンドル」はHSPのobjinfo関数で取得できます。
[2] 第2パラメータ
上の第1パラメータで指定したウィンドウ、または各種オブジェクトに対して送信するメッセージIDを指定します。このメッセージIDは、ものすご〜い数(何百個?)が用意されており、このページではその一部のコード断片を掲載してます。(→
参考、ちょくとさんのページ:ウィンドウメッセージリストの一部)
[3] 第3パラメータ
wParam値を指定します。「word Parameter」から。このパラメータに具体的にどのようなものを指定すべきかは、上の第2パラメータのメッセージIDごとに決められてます。
[4] 第4パラメータ
lParam値を指定します。「long Parameter」から。このパラメータに具体的にどのようなものを指定すべきかは、上の第2パラメータのメッセージIDごとに決められてます。
○ 戻り値
sendmsg命令を呼び出した直後のシステム変数statには、SendMessage関数の結果を返す戻り値がそのまま返ります。