コンテンツにスキップ

SAORI

saoriregist

書式

$(saoriregist DLLファイル エイリアス [ オプション ] )

戻り値

なし

解説

SAORIモジュールの登録。DLLファイルには、相対パスまたは絶対パスでDLLを指定する。エイリアスは、callsaoriコマンドでSAORIモジュールを呼ぶ際のキーワードを指定する。

オプションには、SAORIモジュールをロードするタイミングを指定する。SAORIの中にはロードに時間のかかるものや、呼ばれない可能性があることも考えられるため、このような調整が可能となっている。タイミングには"preload", "loadoncall", "noresident"の3種類があり、それぞれ、「saoriregist時にロード」「最初にcallsaori(x)された時にロード」「callsaori時にロードし、終わったら即アンロード」を意味する。デフォルトはloadoncallである。

Phase 9.0.0以降、SAORIモジュールがloadu(UTF-8のパスを受け取るload)をエクスポートしていれば、UTF-8のパスでloaduを呼ぶ。なければ従来どおりシステムのコードページ(ACP)のパスでloadを呼ぶ。

使用例

=kis
# saori_cpuid.dllをcpuidとして登録。今すぐロード。
saoriregist modules\saori_cpuid.dll cpuid preload
=end

saorierase

書式

$(saorierase エイリアス)

戻り値

なし

解説

登録済みのSAORIを登録から抹消する。ロードされていたら併せてアンロードされる。

使用例

=kis
# cpuidをアンロード
saorierase cpuid;
=end

saorilist

書式

$(saorilist エントリ1)

戻り値

なし

解説

登録済みのSAORIのエイリアスを、すべてエントリ1に格納する。オプションの種類によらず、登録しているエイリアスを全て返すことに注意。

使用例

=kis
# System.SaoriListエントリに登録済SAORIエイリアスの一覧を格納
saorilist System.SaoriList;
=end

callsaori

書式

callsaori エイリアス [ 引数 引数 ... ]

戻り値

SAORIの戻り値(Result)

解説

戻り値が一つのSAORIを呼び出す。

Phase 9.0.0以降、リクエストの文字コードはUTF-8から始める。ロード直後のGET Versionの応答にCharsetがあれば、以後その文字コードで送り、なければ以後Shift_JISで送る(古いSAORI互換)。応答はそのCharsetに従って解釈し、Charsetがなければ、Shift_JISで送った場合はShift_JIS、そうでなければ自動判定する。応答に有効なCharsetがあれば、次回からその文字コードで送る。

SAORI over DirectSSTP (Phase 9.0.0 β2以降、Windows (SSP 2.9.13以降)とninixのみ):本体に内蔵されたモジュール(internal_crypto、internal_data、internal_randomなど)を、DLLなしのSAORIとして呼べる。SAORI/1.0の要求をDLLではなく本体へDirect SSTPで送る。

  • エイリアスの登録は、saoriregistに、実体のないDLLの名前をinternal_で始まる名前で指定する(フォルダは問わない)。本体が互換機能を内蔵するSAORI(houchi、clipcopy、textcopy、saori_ip、saori_cpuid、mciaudio、cpuusage、httpc、string、hanayu)も、DLLが無ければ本体の機能を呼ぶ。DLLの実体があるときは、これまでどおりDLLとして読む。
  • 登録しなくても、internal_で始まるモジュール名をそのままエイリアスにして呼べる。初めて呼ぶとき、本体のinternal_systemのListModulesで内蔵モジュールの一覧を確かめ、一覧にあれば自動で登録する。
  • 1つ目の引数が関数名、2つ目以降がその関数の引数と--オプション=値。詳細はSAORI over DirectSSTPを参照。
  • 本体のウィンドウは、本体からのNOTIFYhwndで知る。それより前は呼べない。
  • 常にUTF-8で送る。引数に改行は書けない(送らずに失敗)。空の引数も位置として数える。
  • Direct SSTPは常にLocalとして扱われるため、SecurityLevelがlocal以外のリクエストの処理からは呼ばない。
  • 本体の応答を最大30秒待つ。時間のかかる処理は、モジュール側の--async=識別子で非同期にする。

使用例

sentence : \0\s[0]ここのOSは$(callsaori cpuid os.name)ね。\e

# 登録なしで、本体のモジュールを呼ぶ
sentence : $(callsaori internal_crypto Digest sha256 abc)

callsaorix

書式

callsaorix エイリアス 戻り値格納エントリ [ 引数 引数 ... ]

戻り値

SAORI呼び出し結果(Result)

解説

複数の戻り値を持つSAORIを呼び出し、結果を得る。SAORIの戻り値はValue[数値]ヘッダに格納されているが、これを、「指定エントリ.Value[数値]」エントリに格納する。また、「指定エントリ.size」に、得られた戻り値(Value)の数を返す。

使用例

# tmizu氏作のwmove.dllを使い、キャラクタの立ち位置を取得する
=kis
fuction getposition $(
  # 引数1 : 0=Sakura、1=Kero
  # 引数2 : 戻り値返却用エントリ名
  if $[ $@arg[1] == 0 ] $(
    setstr @characterHWnd $System.HWnd.shell[0];
  ) else if $[ $@arg[1] == 1 ] $(
    setstr @characterHWnd $System.HWnd.shell[1];
  ) else $(
    return "";
  );

  callsaorix wmove $@arg[2] GET_POSITION ${@characterHWnd};
);
=end