CGI State: None
document

API 一覧

SAKURA API/1.0
SAKURA API/1.1
SAKURA API/1.2
SAKURA API/1.3
SAKURA API/1.4
SAKURA API/1.5

概要


WM_SAKURAAPI を embryo に送信することにより、任意の外部プロセスが embryo をコントロールしたり、プロセス内部の情報をローコストかつ確実に取得することができます。

WM_SAKURAAPI は RegisterWindowMessage API に Sakura という文字列を渡すことで定義されます。


WM_SAKURAAPI = RegisterWindowMessage("Sakura");


SAKURA API が使用するウインドウメッセージは WM_SAKURAAPI のみで、具体的なコマンドは wparam および lparam で渡されます。


wparam 0-127 はカテゴリ EXECUTE です。embryo は指示されたコマンドを実行します。

wparam 128-255 はカテゴリ GET です。embryo は要求されたデータをクライアントに返信します。

wparam 256-384 はカテゴリ NOTIFY です。embryo はイベントを受け取ります。

API 一覧


  • EXECUTE


    SA_EXECUTEREMAKEMENU
    0
    SA_EXECUTEREWRITEFMO
    1
    SA_EXECUTEWINDOWSTATESWITCH
    2
    SA_EXECUTERELOADSHIORI
    3
    SA_EXECUTENOTIFYOTHERGHOSTNAME
    4


  • GET


    SA_GETHEADCOLLISIONRECTSAKURA
    128
    SA_GETFACECOLLISIONRECTSAKURA
    129
    SA_GETBUSTCOLLISIONRECTSAKURA
    130
    SA_GETCENTERPOINTSAKURA
    131
    SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA
    132
    SA_GETHEADCOLLISIONRECTKERO
    133
    SA_GETFACECOLLISIONRECTKERO
    134
    SA_GETBUSTCOLLISIONRECTKERO
    135
    SA_GETCENTERPOINTKERO
    136
    SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO
    137
    SA_GETPROCESSID
    138
    SA_GETSHAREDMEMORY
    139
    SA_GETGHOSTSTATE
    140


  • NOTIFY


    SA_NOTIFYEVENT
    256

  • SAKURA API/1.0


  • SA_EXECUTEREMAKEMENU / wparam = 0 / lparam = n/a


    ポップアップメニューの再構築。起動中にファイル構成やディレクトリ構成が変化しても embryo のメニューツリーはそれを即座に反映しないが、このコマンドを送ることでリロードを指示できる。


  • SA_EXECUTEREWRITEFMO / wparam = 1 / lparam = n/a


    FMO のリライト。


  • SA_EXECUTEREWRITEFMO / wparam = 4 / lparam = n/a


    NOTIFY otherghostname の実行。

  • SAKURA API/1.1


  • SA_GETHEADCOLLISIONRECTSAKURA / wparam = 128 / lparam = 0 - 3
  • SA_GETFACECOLLISIONRECTSAKURA / wparam = 129 / lparam = 0 - 3
  • SA_GETBUSTCOLLISIONRECTSAKURA / wparam = 130 / lparam = 0 - 3


    現在表示されている sakura 側サーフィスの頭部、顔部、胸部当たり判定領域を rect 座標値で返す。


    lparam

    0
    left
    1
    top
    2
    right
    3
    bottom


  • SA_GETCENTERPOINTSAKURA / wparam = 131 / lparam = 0 - 1


    現在表示されている sakura 側サーフィスの中心 x 座標および y 座標を座標値で返す。


    lparam

    0
    centerx
    1
    centery


  • SA_GETHEADCOLLISIONRECTKERO / wparam = 133 / lparam = 0 - 3
  • SA_GETFACECOLLISIONRECTKERO / wparam = 134 / lparam = 0 - 3
  • SA_GETBUSTCOLLISIONRECTKERO / wparam = 135 / lparam = 0 - 3


    現在表示されている kero 側サーフィスの頭部、顔部、胸部当たり判定領域を rect 座標値で返す。lparam の仕様は 128 と同じ。


  • SA_GETCENTERPOINTKERO / wparam = 136 / lparam = 0 - 1


    現在表示されている kero 側サーフィスの中心 x 座標および y 座標を座標値で返す。


    lparam

    0
    centerx
    1
    centery


  • SA_GETGHOSTSTATE / wparam = 140 / lparam = n/a


    ゴーストの現在のステートを返す。戻り値は以下のような意味を持つ。


    result

    GS_NONE
    0
    イベントなし、待機状態
    GS_TALKING
    1
    伺か喋っている
    GS_TIMECRITICALSESSION
    2
    タイムクリティカルセッション

  • SAKURA API/1.2


    SAKURA API/1.2 は絶対きのこ領域(AKF)を取得するためのリクエストです。


  • SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA / wparam = 132 / lparam = 0 - 1


    現在表示されている sakura 側サーフィスの絶対きのこ領域中心座標の x 座標および y 座標を座標値で返す。


    lparam

    0
    kinoko.centerx
    1
    kinoko.centery


  • SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO / wparam = 137 / lparam = 0 - 1


    現在表示されている kero 側サーフィスの絶対きのこ領域中心座標の x 座標および y 座標を座標値で返す。lparam の仕様は 132 と同じ。

  • SAKURA API/1.3


    SAKURA API/1.3 は Sakura へのイベント通知を実現するためのリクエストです。


  • SA_GETPROCESSID / wparam = 138 / lparam = n/a


    Sakura プロセスのプロセスIDを返します。


  • SA_GETSHAREDMEMORY / wparam = 139 / lparam = -1 - 7


    Sakura プロセス空間内に恒常的に存在する 8192 バイトの静的メモリを指すポインタを返します。ポインタは9スロット存在(8192x9)し、lparam の値で個々のスロットのポインタ値を取得できます。

    外部プロセスは以上2つの情報を用いて Sakura にイベントを通知します。具体的には、イベントを通知したいプロセスはまず SA_GETPROCESSID で processid を取得し、それを openprocess し、SA_GETSHAREDMEMORY で得られたポインタに対して writeprocessmemory で必要な情報を書き込み、その後以下で定義されるイベントメッセージを Sakura に対して投げます。イベントを受信した Sakura はイベントそのものを認識すると共に SHAREDMEMORY の各スロットから情報を取り出し、適切な動作(主に SHIORI へのイベント通知)を行います。

    -1 のスロットは多くの場合特殊な意味を持ちます。例えば SAKURA API/1.3 を SHIORI/2.2 へのイベント通知として使用する場合、スロット 0〜7 はそれぞれ Reference0〜7 に対応し、スロット -1 はイベント識別子として使用されます。


  • SA_NOTIFYEVENT / wparam = 256 / lparam = n/a


    イベント発生を Sakura に通知します。このメッセージはイベントが発生したという以外何の情報も持ちません。送信者はこのメッセージを送る前に必ず SHAREDMEMORY に適切な値をセットしておかなくてはなりません。

  • SAKURA API/1.4


  • SA_EXECUTEWINDOWSTATESWITCH / wparam = 2 / lparam = n/a


    最小化を行う。既に最小化状態だった場合は復元する。

  • SAKURA API/1.5


  • SA_EXECUTERELOADSHIORI / wparam = 3 / lparam = n/a


    現ゴーストの SHIORI をロードし直す。

  • 戻る