sendmsg命令 チップ集

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〜 ]

^

4つのパラメータ

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関数の結果を返す戻り値がそのまま返ります。

^

Copyright © Kpan. All rights reserved.