コンテンツにスキップ

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 で包みます。

関連項目