ClientなどのメッセージングツールにSARSなどのエディタからスクリプトを投げたり、その他色々と関連ソフトウエア間で通信するための規格。※名称'FINE(フィーネ)'は特に何かの略称ではなく、SERIKO規格のように名前を当てただけです。†FINEサーバFINEリクエスト受信側。FINEクライアントFINEリクエスト送信側。†FINEクライアントがFINEサーバの存在を感知し、情報を得るためにFMO'Fine'を保持する。FMOへのアクセスはMUTEXによる排他制御が必須である。(制御用MUTEXは'FineFMO')FMO書式は次の通り。†アプリケーション名:プロパティ名:値[cr][lf]HWndプロパティ、Capabilityプロパティ及びServerVersion?プロパティは必須。その他のプロパティ名はサブ規格毎に定義される。記号を用いてはならない。終端は0x00とする。0x00が現れた以降のエントリは無効である。使用可能な文字コードはShift_JISとする。Bottle@76607660:ServerVersion:2.70[cr][lf]BoIP@99999999:HWnd:xxxxxxxxxx[cr][lf]BoIP@99999999:Target:ぼとるいぬごや(嘘)[cr][lf]BoIP@99999999:Capability:MessageSend[cr][lf]BoIP@99999999:ServerVersion:0.83d[cr][lf]SARS@37564000:HWnd:xxxxxxxxxx[cr][lf]SARS@37564000:Capability:SetScript,SetScriptPartial[cr][lf]SARS@37564000:ServerVersion:2.9.1.42087[cr][lf][0x00]アプリケーション名アプリケーション名は、アプリケーション側での二重起動時のFMO破壊を防止する等の目的で、アプリケーション名@固有IDという書式を用いてもよい。記号を認識して適宜それを分割して認識してもよい。CapabilityプロパティCapabilityプロパティには、サーバがどのFINEサブ規格に対応可能かを記述する。内容はイベント名からOnFINEを取った形でカンマ区切りで列挙する。例SARS:Capability:SetScript,SetScriptPartialBottleClient:Capability:MessageSend,SetScript,SetScriptPartialServerVersion?プロパティFINEサーバのバージョン文字列を記述する。サイズを示す値があるのでデータ本体で使用可能な領域は1024*64-4B。†WM_COPYDATAによるFINEリクエストを処理し、処理結果を返す。基本的にはSSTPのステータスコードに準拠するが、サブ規格で追加定義されている物がある事を注意せよ。OK)また、ステータスラインの後に空行を入れてアプリケーション及びEvent固有の情報を返してもよい。リクエスト処理は正常に終了した。呼び出しの不備、内容の不一致。リクエストの内容が解釈不能など。†FMOのアクセスはMUTEXによる排他制御を行う事が推奨されるが、実装は任意である。MUTEXによる排他制御を行わない場合は読み込み中にFMOが破壊される事態に備え、文法的に間違ったFMOに対して対処出来るように注意せよ。FINEクライアントは書き込みを行ってはならない。Protocol)のNOTIFY/1.0形式に順じ、WM_COPYDATAにて行う。ソケット接続による発行はサポートしない。†SenderFINEクライアントの名前が入る。Eventサブ規格で定義されるイベント名(OnFINE~)。Charsetリクエストの文字コード。サポートするのはUTF-8/Shift_JIS/ASCII。HWndFINEクライアントのHWnd。Reference0-7リクエスト内容。どのReferenceが何を意味するのかはサブ規格で定義される。発行後、FINEサーバから返されるステータスコードに従って適切な処理を行う事。お騒がせしてすみませんです。さぐれソフトのTODOに書いて頂いた現象もこれで直ったと思います。方も0x00を終端とする(0x00埋めをしない)仕様らしいので、こちらを直しました。げ、また何かポカやってましたか。コード見直してみます。0x00をターミネータとするならそういう仕様にするので良いのですが、一旦全部きれいにする(残りを0x00で埋める)仕様だと思っていたので。TC上げ落としするとゴミが残るなーと思っていたら、TCは最後のエントリに0x00一個だけしか書かない(その後古いゴミは残したまま)みたいです。Capabilityと@の扱いを追記しました。Capabilityですか。Client非公式ビルドにCapabilityを実装しました。ステータスコードに420を追加しました。Capability、よさそうですね。ステータスコードに501を追加しました。SARS実装しました。FMOの[cr][lf]と0x00、後NOTIFYのヘッダのHwnd→HWndです。それではTC側も実装始めます。これでひとまず固めてよろしいでしょうか。ページ作成やらせてしまってすみません。この仕様に従って実装してみます。