コンテンツにスキップ

本体との連携

getproperty

書式

getproperty プロパティ名 [ 既定値 ]

戻り値

プロパティの値。取得できなかったときは既定値(省略時は空文字列)

解説

本体(SSPなど)のプロパティシステムから値を取得する(Phase 9.0.0 β2以降)。本体にSSTPのEXECUTEでGetPropertyを送る。プロパティ名の仕様は、本体のドキュメント(SSPならUKADOCのプロパティシステム)を参照。

応答コードが200のときだけ値を返し、それ以外は既定値を返す。存在しないプロパティ(204)、本体のウィンドウがまだ分からないとき、本体が5秒以内に応答しなかったときも既定値になる。応答コードはSystem.SSTP.ResponseCodeで確かめられる(executesstpを参照)。

送り先は、本体からのNOTIFYhwndで知るので、Windowsでは本体がSHIORI/3.0でNOTIFYを送る環境で使える。ninixではFMOからUNIXソケットを探す。SecurityLevelがlocal以外のリクエストの処理からは送らない。

使用例

sentence : 現在のゴーストは$(getproperty currentghost.name 不明)です。

setproperty

書式

setproperty プロパティ名 値

戻り値

なし

解説

本体のプロパティシステムに値を設定する(Phase 9.0.0 β2以降)。本体にSSTPのEXECUTEでSetPropertyを送る。送り先や条件はgetpropertyと同じ。応答コードはSystem.SSTP.ResponseCodeに入る。値を空にはできない(SSPは空の値を受け取らず、400になる)。

使用例

# オーナードローメニューの「シェル」から、masterシェルを隠す
sentence : $(setproperty "currentghost.shelllist(master).menu" hidden)

executesstp

書式

executesstp コマンド [ 引数 引数 ... ]

戻り値

応答の追加データの1行目。応答コードが200番台でないとき、追加データがないとき、送れなかったときは空文字列

解説

本体にSSTPのEXECUTEを送り、その応答を受け取る(Phase 9.0.0 β2以降)。Command:にコマンド(GetVersion、GetNamesなど)を、引数をReference0:、Reference1:...に入れて送る(CharsetはUTF-8)。コマンドの種類は、本体のドキュメント(SSPならUKADOCのSSTPの仕様)を参照。

実行するたびに、次のエントリが書き換わる。

  • System.SSTP.ResponseCode:応答コード。200=成功、204=成功したが返す値がない、400や501など=本体が受け付けなかった、0=送れなかった・応答がなかった
  • System.SSTP.Data:追加データ(1行を1単語として格納。無ければ空)

0になるのは、本体のウィンドウがまだ分からないとき(NOTIFY hwndの前)、コマンドや引数が空、またはコマンドや引数に改行を含むとき(ヘッダを書き換えられてしまうため送らない)、SecurityLevelがlocal以外のリクエストの処理中のとき、本体が5秒以内に応答しないとき。理由はログに出る。

SSPはSHIORIをメインスレッドとは別のスレッドから呼ぶため、メインスレッドがSHIORIの処理を待っているときはEXECUTEに応答できず、最大5秒待たされて0になる。大事な処理では応答コードを確かめること。

使用例

sentence : 本体は$(executesstp GetVersion)です。

executesstpx

書式

executesstpx 追加データ格納エントリ コマンド [ 引数 引数 ... ]

戻り値

応答の追加データの1行目(executesstpと同じ)

解説

executesstpと同じだが、追加データの全行を、指定したエントリに1行1単語で格納する(エントリはいったん空になる)。GetNamesのように複数行を返すコマンド向け。行数はsizeコマンドで得られる。

使用例

=kis
executesstpx names GetNames;
# namesエントリにインストール済みのゴースト名が入る
=end