DICTIONARY/1.1
DICTIONARY/1.1 は検索結果が複数件存在する場合の分岐を実現するための仕様です。
・descript.txt
DICTIONARY/1.0 と同じです。DICTIONARY/1.0 の文書を参照して下さい。
・DLL
load、unload、setproxy 関数仕様は DICTIONARY/1.0 と同じです。DICTIONARY/1.0 の文書を参照して下さい。
extern "C" __declspec(dllexport) HGLOBAL __cdecl getversion(long *len); |
DLL ロード直後、他の関数がインポートされる前にまずこの関数が呼ばれます。辞書検索プラグインは "DICTIONARY/1.1" という 14 バイトの文字列を返して下さい。
extern "C" __declspec(dllexport) HGLOBAL __cdecl consult(HGLOBAL h, long *len); |
引数には検索文字列が gmem_fixed で渡されます。len の値は文字列の長さになっています。文字列は NULL ターミネートされていないことに注意してください。
dll は検索文字列を辞書で引き、検索結果の文字列を gmem_fixed で返して下さい。len には検索結果文字列の長さを格納してください。
検索に失敗した場合はメモリをアロケートせずに 0 を返して下さい。また、検索結果が複数件存在する場合も 0 を返して下さい。
検索文字列が必要ない場合でも関数内で必ずハンドルを解放して下さい。
extern "C" __declspec(dllexport) HGLOBAL __cdecl getcontent(long *len); |
consult 関数での戻り値が 0 だった場合、getcontent 関数が繰り返し呼ばれることになります。検索結果の内容を gmem_fixed で返して下さい。
検索結果の内容の 1 行目は件名になります。2 行目以降が実際の内容になります。
件名[CR+LF]内容‥‥
件数分を返し終わった場合 0 を返して下さい。0 が返されると ClipCommand は getcontent 関数の呼び出しを終了します。
例えば検索結果が 2 件の場合、初回呼び出し時に 1 件目の内容、2 回目の呼び出し時に 2 件目の内容、3 回目の呼び出し時に 0 を返して下さい。
consult 関数実行時に検索に失敗していた場合、初回呼び出し時に 0 を返して下さい。