execute_sstp¶
Category: 本体との連携
書式¶
(execute_sstp、コマンド)
(execute_sstp、コマンド、引数0、引数1、…)
引数¶
| 引数 | 説明 |
|---|---|
| コマンド | SSTP の EXECUTE で送るコマンド(Command: の値。GetVersion GetNames など) |
| 引数0、引数1、… | Reference0: Reference1: … として送る値(省略可) |
戻り値¶
追加データの 1 行目。応答コードが 200 番台でないとき、追加データがないとき、送れなかったときは空文字列。
追加データの全行は (S0) (S1)… に、行数は (Sの数) に入ります。応答コードは (SSTP応答コード) で参照します。
解説¶
ベースウェア(SSP など)に SSTP の EXECUTE を送り、その応答を受け取ります。get_property / set_property を、任意のコマンドに広げたものです。送り先は、NOTIFY hwnd などで得たゴーストのメインウィンドウです。コマンドと応答の形式は、ベースウェアのドキュメント(SSP なら UKADOC の SSTP の仕様)を参照してください。ローカルのみの関数です(SecurityLevel: local でないリクエストでは実行されません)。
結果の受け取り方は SAORI と同じです。
- 戻り値は追加データの 1 行目です。
GetVersionやGetPropertyのように 1 行だけ返すコマンドは、そのままトークの中で使えます。 - 追加データの全行が
(S0)(S1)… に入ります。GetNamesなどの一覧は、(Sの数)と(S0)… で扱えます。 - 追加データがない応答(
RestoreやSetPropertyなど)では、(S0)… は書き換わりません。直前の一覧を回しながら、追加データを返さないコマンドを送れます。
(SSTP応答コード) には、次の値が入ります。get_property と set_property でも同じように入ります。
| 値 | 意味 |
|---|---|
200 |
成功 |
204 |
成功したが、返す値がない(存在しないプロパティを GetProperty した、など) |
400 501 など |
ベースウェアが受け付けなかった(501 は対応していないコマンド) |
0 |
送れなかった・応答がなかった |
0 になるのは、次のような場合です。理由はログに出ます。
- ウィンドウハンドルがまだ分からない(起動直後など)。
- コマンドや引数に改行が含まれている(ヘッダを書き換えられてしまうため、送りません)。
- ベースウェアが 5 秒以内に応答しなかった。
応答が返らないことがある
SSP は SHIORI をメインスレッドとは別のスレッドから呼ぶため、メインスレッドが SHIORI の処理を待っているときは EXECUTE に応答できません。このとき (SSTP応答コード) は 0 になり、そのリクエストは最大 5 秒待たされます。続けて送っても、ベースウェアが応答できるようになるまではすぐに 0 になります。大事な処理では応答コードを確かめてください。
送る要求は次のとおりです(Charset は UTF-8 で、Sender は Satori)。
EXECUTE SSTP/1.1
Charset: UTF-8
Sender: Satori
Command: コマンド
Reference0: 引数0
Reference1: 引数1
Mc204-1以降。
使用例¶
*OnBootVersion
:本体は(execute_sstp、GetVersion)です。
*ゴーストの数
:(nop、(execute_sstp、GetNames))(when、(SSTP応答コード)==200、インストールされているゴーストは(Sの数)体です。最初は(S0)ですね。、一覧を取得できませんでした。)
戻り値(1 行目)を表示したくないときは、nop で包みます。