テキスト処理プラグインを作りませんか?
Posted: 2007年9月30日(日) 21:24
お世話になっております。
ABにて作成したタブ型テキストエディタに、プラグイン機能を追加しました。
テキストエディタ本体はこちらになります。
というわけで、このテキストエディタにて動作する、テキスト処理プラグインを募集いたします。( ^_^)
サンプルDLL、開発支援テンプレート等はこちらです。
プラグインの仕様は、こちらです。
例えば、
・テキストスピーチ
・特定の情報を抽出してテキストを整形
・選択されたテキストをグーグル検索
・自分がよく使う構文の自動挿入
・顔文字リスト挿入
etc
というように、汎用性のあるものから、自分専用なニッチなものまで、なんでもありです。
自分専用のつもりであっても、誰かに需要があるかもしれません。
興味ありましたら是非、作成してみませんか?
作成したプラグインのアップロード先に困った際は、こちらの「プラグイン置き場」をご利用ください。
# 2008.12.10 URLを修正しました。スパム対策のため。
作成されたプラグインの公開をお待ちしております。
ABにて作成したタブ型テキストエディタに、プラグイン機能を追加しました。
テキストエディタ本体はこちらになります。
というわけで、このテキストエディタにて動作する、テキスト処理プラグインを募集いたします。( ^_^)
サンプルDLL、開発支援テンプレート等はこちらです。
プラグインの仕様は、こちらです。
仕様書を開く [ここをクリックすると内容が表示されます]
コード: 全て選択
■プラグインとして認識されるファイル名
システムモジュール(TabTextList.exe)のあるフォルダ直下の
"Plugins"フォルダに置かれた拡張子[.tpi]のDLLを、プラグインとして認識します。
"Plugins\*.tpi"
■プラグインが呼び出されるタイミング
「手近なテキストメニュー」が選択されたとき。
■プラグインの実装
プラグインDLLは以下の4つの関数をエキスポートする必要があります。
※以下において、「テキスト処理」とは「手近なテキストメニュー」
によって選択されたプラグインのテキスト処理の実行を意味します。
------------------------------------------------
【関数名】 【機能】
TtlPlgIn_GetTMenuTitle システムモジュールが、プラグインで実装されたメニュー名を取得するために利用します。
TtlPlgIn_HandleOpen テキスト処理の開始時に呼び出されます。
TtlPlgIn_Work テキスト処理を実行するために呼び出されます。
TtlPlgIn_HandleClose テキスト処理の終了時に呼び出されます。
以上の4つの関数は以下の流れで呼び出されます。
TtlPlgIn_GetTMenuTitle
↓
TtlPlgIn_HandleOpen
↓
TtlPlgIn_Work
↓
TtlPlgIn_HandleClose
■エキスポート関数の仕様
呼び出し規約は "__stdcall" 出なければなりません。
以下では「Long型(long型)=符号付き32ビット整数型」として扱います。
○Function Export TtlPlgIn_GetTMenuTitle( nIndex As Long, pszMenu As BytePtr ) As Long
【引数】
nIndex As Long
プラグインが持つ、テキスト処理メニューの項目番号(0,1,2,,,)がLong型で指定されます。
もしくは、テキスト処理メニューの個数取得のフラグとして[-1]が指定されます。
pszMenu As BytePtr
指定されたテキスト処理メニューのタイトルを格納すべきバッファのポインタが
BytePtr(*char)型で指定されます。
【返り値】
Long型を返します。
nIndex=-1 のときは、プラグインが保有するテキスト処理メニューの個数を返します。
nIndex=0,1,2,,, のときは、pszMenu に格納したタイトルの長さを返します。
○Function Export TtlPlgIn_HandleOpen( nIndex As Long ) As DWord
【引数】
nIndex As Long
システムモジュールによって選択された(「手近なテキストメニュー」で選択された)、
テキスト処理メニューの項目番号がLong型で格納されます。
【返り値】
DWord(unsigned long)型です。
テキスト処理メニューを識別するハンドルを返します。
ここで返したハンドルが TtlPlgIn_Work() と TtlPlgIn_HandleClose() に与えれます。
○Function Export TtlPlgIn_Work( dwHandle As DWord, hWnd As HWND , pszFile As BytePtr, pszText As BytePtr, pszSel As BytePtr, ByRef pzNText As BytePtr, ByRef pzNSel As BytePtr, dwReserved As DWord ) As DWord
【引数】
dwHandle As DWord
テキスト処理メニューを識別するハンドルがDWord(unsigned long)型で指定されます。
hWnd As HWND
システムモジュールの窓ハンドルが指定されます。
pszFile As BytePtr
編集中のテキストが保存されているファイルパスが格納されたバッファのポインタがBytePtr(*char)型で指定されます。
格納内容を編集は禁止です(コピーのみ可)。
pszText As BytePtr
編集中のテキスト全体が格納されたバッファのポインタがBytePtr(*char)型で指定されます。
格納内容を編集は禁止です(コピーのみ可)。
pszSel As BytePtr
被選択テキスト(反転部)が格納されたバッファのポインタがBytePtr(*char)型で指定されます。
格納内容を編集は禁止です(コピーのみ可)。
ByRef pzNText As BytePtr
テキスト処理を実行後の、テキスト全体を格納したバッファへのポインタをBytePtr(*char)型で指定します。
このパラメータに指定したバッファは、TtlPlgIn_HandleClose() が呼ばれるまで有効でなければいけません。
不要であればNULLを指定できますが、その際は dwReserved に TTL_PLUGIN_ALLTEXT 以外を指定しなければなりません。
ByRef pzNSel As BytePtr
テキスト処理を実行後の、被選択テキストを格納したバッファへのポインタをBytePtr(*char)型で指定します。
このパラメータに指定したバッファは、TtlPlgIn_HandleClose() が呼ばれるまで有効でなければいけません。
不要であればNULLを指定できますが、その際は dwReserved に TTL_PLUGIN_SELECTED 以外を指定しなければなりません。
dwReserved As DWord
将来のために予約されています。
現在は、NULLが指定されます。
【返り値】
テキスト処理の種類を指定します。
テキスト全体を処理した場合は、TTL_PLUGIN_ALLTEXT(=1)
※テキスト全体が、pzNText に指定された内容で置き換えられます。
被選択テキストのみが処理された場合は、TTL_PLUGIN_SELECTED(=2)
※被選択テキストのみが、pzNSel に指定された内容で置き換えられます。
テキスト処理を伴わない、もしくは処理に失敗した場合は、TTL_PLUGIN_FALSE(=0)
※テキストの置き換えは行いません。
○Function Export TtlPlgIn_HandleClose( dwHandle As DWord ) As Char
【引数】
dwHandle As DWord
テキスト処理メニューを識別するハンドルがDWord(unsigned long)型で指定されます。
【返り値】
処理の結果をTRUE(=1) or FALSE(=0) で返します。
■備考
プラグインDLL内部にて、動的メモリ(ヒープ領域)確保が必要な場合には、
TtlPlgIn_HandleOpen() もしくは、TtlPlgIn_Work() にて確保を行い、
TtlPlgIn_HandleClose() にて開放することを推奨します。
例えば、
・テキストスピーチ
・特定の情報を抽出してテキストを整形
・選択されたテキストをグーグル検索
・自分がよく使う構文の自動挿入
・顔文字リスト挿入
etc
というように、汎用性のあるものから、自分専用なニッチなものまで、なんでもありです。
自分専用のつもりであっても、誰かに需要があるかもしれません。
興味ありましたら是非、作成してみませんか?
作成したプラグインのアップロード先に困った際は、こちらの「プラグイン置き場」をご利用ください。
# 2008.12.10 URLを修正しました。スパム対策のため。
作成されたプラグインの公開をお待ちしております。