StreamRelay.NET.exe の一覧機能を呼び出しているプラグインの実装方法について説明する
StreamRelay.NET.exe/StreamRelay.NET.x86.exeには、いくつかの機能をプラグインとして実装できるようにインターフェイスを公開している。
今回は、一覧(接続しているマイク一覧とか、インストールされている言語一覧とか・・・)を取得/表示するためのインターフェイスを使って、プラグインを作成する方法を記述する。
既存のプラグイン
マイクの一覧とか、音声合成する言語の一覧とか、いろいろなところに使われている。
プラグイン的には、このあたり。
- Plugins\Win32\stdioSoundRecordMDX.dll
- Plugins\Win32\stdioSoundRecordSlimDX.x86.dll
- Plugins\Win64\stdioSoundRecordSlimDX.x64.dll
- Plugins\stdioSpeachRecognition.dll
実装したプラグインの呼び出され方
プラグインで指定された引数が渡されると、一覧を取得して表示する。
という感じ。
実装するインターフェイス
以下のインターフェイスを継承したクラスを実装すればよい
- IPlugin.dll 中の jp.dip.rocketeer.Plugins.IPluginListing インターフェイス
このクラス一つだけ実装すればよい。
jp.dip.rocketeer.Plugins.IPluginListing インターフェイス
StreamRelay.NET.exeが、引数/オプションの解析処理中に呼び出して、引数の指定内容によって有効化していれば、プロパティ「CanListing=true」にして、一覧を取得する。
そうすると、StreamRelay.NET.exeで、いろいろな一覧を表示する際に String getListingString(String Header) が呼び出される。
という感じ。
具体的には、起動直後の引数/オプションの解析処理中に、
int Args(String iStr1, String iStr2);
を呼び出すので、自分の引数であれば、プロパティ「CanListing=true」にしてくれればよい。
自分の引数でなければ、0を返す。
より、具体的には、
例えば、
c:\>StreamRelay.NET.exe a b c d e f
というコマンドラインで起動したら、
- iStr1=a, iStr2=b, iStr3=c, で、Args() を呼び出し、
- iStr1=b, iStr2=c, iStr3=d, で、Args() を呼び出し、
- iStr1=c, iStr2=d, iStr3=e, で、Args() を呼び出し、
- iStr1=d, iStr2=e, iStr3=f, で、Args() を呼び出し、
- iStr1=e, iStr2=f, iStr3=NULL, で、Args() を呼び出し、
という感じ・・・
例えば、iStr1=b, iStr2=c, iStr3=d, の時、自分の引数ということで、iStr1=b, iStr2=c, を Args() で使用したら、2を返す。すると次は iStr1=d, iStr2=e, iStr3=f, で、Args() が呼び出される。
ということになっている。
jp.dip.rocketeer.Plugins.IPluginListing インターフェイスで定義しているメソッド/プロパティ
実装する必要があるのは以下
jp.dip.rocketeer.Plugins.IPluginListingインターフェイスで定義されているのは、以下のとおり
- String[] usage { get; }
- ヘルプに引数を表示する
- int Args(String iStr1, String iStr2)
- 引数を解析して、自分のものだったかどうかを返す(「名前」「 値」の二つを必要とするバージョン)
- Boolean CanListing { get; }
- 一覧表示を実施するよう引数で指示されたかどうか
- String getListingString(String Header)
- 一覧表示の出力結果
jp.dip.rocketeer.Plugins.IPluginBaseインターフェイスで定義されている分については、インターフェイス IPluginBase についてを参照