DirectSSTPでプロパティシステムを使う

 - by Don

これは伺かアドベントカレンダー2012の17日目の記事です。

単一イベント内で処理を完結する

前回バルーンのサイズを取得するで紹介したプロパティシステムですが、\![get,property,...]を使うとイベントを発生させなければならず、単一イベント内で処理を完了できないのであまりスマートではありません。実際にゴーストに組み込む時には、バルーンサイズの取得などは関数として定義して簡単に利用できるようにしておきたいものです。

こんな時はDirectSSTPを使ってプロパティシステムにアクセスするとcoolです。里々なら以下のような感じです。

*ベースウェアバージョンを知る
:(HandUtil,DSSTPSend,(FMO0hwnd),result,EXECUTE SSTP/1.1,Charset: Shift_JIS,Sender: SATORI,Command: GetProperty[baseware.version])
(S0)
(S1)

ここではDirectSSTPを送信するためにHandUtil.dllを使います。Executeリクエストを使用してベースウェアのバージョンを取得するサンプルです。

ただ、残念なことにバルーンサイズであれば縦と横の2つを取得する必要がありますが、DirectSSTPでは1つずつしか取得することができません。\![get,property,...]は複数の値が一度に取得できるのに比べて、スマートではないですね。

しかしSakuraScriptを使わずに取得できればSHIORIログが汚れないですし(代わりにSSTPログが汚れるけど)、PLUGINなどから利用するにもGHOSTにSakuraScriptを再生させずに済むので私はDirectSSTPによるアクセスを好んで利用しています。場面によって使いやすい方を使えるとよいですね。

No comments yet.