2005年03月14日

キーワードチャンネル ソースコードリリース

Heimdallrのチャンネル拡張プラグインの1つであるキーワードチャンネルのソースコードをリリースします。

キーワードチャンネル 0.03 ソースコード(Visual C++.NET 2003用) ダウンロード

このソースコードは、著作権は放棄しませんがご自由にお使い下さい。もしソースコードのライセンスを明確にしたいという方がおりましたらご相談下さい。そのときに考えます。

Heimdallrとチャンネル拡張プラグインの間のインターフェースは、ChannelExtensionPluginAPIという名前が一応ついています。仕様の一部は以下のページで公開されています。
「ChannelExtensionPluginAPI仕様」
このページはWikiにより誰でも編集できるようになっています。 私が更新するペースはとても遅いと思いますので、 適当にソースコードを解析してさくさく書き足していって下さい。

キーワードチャンネルのソースコードは、Heimdallr本体よりもずっとビルドが容易になっています。 但しboostライブラリは必須です。 boostライブラリのヘッダファイルがあるフォルダをインクルードファイルのパスに含めてからビルドして下さい。
なお、変な場所にDLLファイルを出力するのでちょっと気を配っておいて下さい。
また、Visual C++.NETのStandard Editionを使う場合は、MFCの静的リンクができなかったと思うのでそこら辺も変更する必要があるかもしれません。

以下はどうでもよい話です。
一応キーワードチャンネルにバージョン番号が付いています。0.03です。 このバージョン番号はかなり適当につけました。
Heimdallr 1.08(安定版)をリリースするときまでに作りこんだので1.00を名乗っても良いんですよね。でももう1.08をリリースしちゃったので今更変えるのも面倒なのでとりあえずはこのままということで。

投稿者 MASATO : 2005年03月14日 00:22 | トラックバック
コメント

GooBlogのコメントをGetするプラグイン(要Perl環境)
http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=GooBlog%2Elzh

そのソースコード
http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=HeimDLL%5FSrc%2Elzh

Delphiでこれからプラグインを作ろうと想う人にはちょっぴり参考になるかも?
Delphi6Personalは無料なので良い感じです。

Posted by: 瞳子 : 2005年03月24日 20:24

> ntdll.dllのメモリ管理周りの問題?っぽいのを回避できたのですが如何でしょうか?
落ちることはなくなりましたが、PluginGetInfoがFALSE(数値としては0)を返しているように見えます。
VC++のDebugモード、Releaseモード、ともにそうなります。
しかし、別のPCで(VC++を使わずに)試してみるとTRUEを返しているようです。
環境によってTRUEを返したりFALSEを返したりと不思議な挙動を見せています。謎ですね。

> plugin作るのって難しいですね~
今のところの難しさは、CとDelphiの違いに起因しているところがほとんどですねー。
本当に難しいのはこれからです。たぶん。^^;
でも1つ作ってしまえば2つ目以降は楽ですよ。

Posted by: MASATO : 2005年03月23日 23:56

http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=test+%281%29%2Elzh

ntdll.dllのメモリ管理周りの問題?っぽいのを回避できたのですが如何でしょうか?
これでもPluginGetInfoで落ちますでしょうか?

これで大丈夫そうならPluginStoreChannelInfoとPluginLoadChannelInfo以外の部分は本実装固めてみようと思います。

plugin作るのって難しいですね~

Posted by: 瞳子 : 2005年03月23日 17:22

HeimdallrをDebugモードで実行すると、最初のPluginGetInfoで落ちます。
Releaseモードで実行すると、PluginGetInfoは問題ありません。
ううむ良く分からない動作をしますね。

とりあえずReleaseモードで見ていますが、
PluginGetInfoが呼び出されるところまでたどり着けない状況です。
PluginCreateChannelが呼び出されるところは見てダイアログが表示されることは確認したのですが、どうもこの関数がfalseを返すようです。何か操作が足りないのでしょうか?

推測ですが、PluginGetInfo関数の型が仕様と異なるのではないかと思います。
ここらへんがおかしいと動作が不安定になり、落ちたり落ちなかったりするようになる恐れがあります。

PluginGetChannelにも問題があるのかもしれませんが、
Debugモードで実行すると、最初のPluginGetInfoで落ちるというのはおかしいので、とりあえずこれから解決していった方が良いのではないかと思います。

Posted by: MASATO : 2005年03月22日 23:15

http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=test%2Elzh

PluginGetChannelでHeimdallrが強制終了してしまうです(泣
原因を教えていただけると助かります。

やっていることは
plugin/test/gettest.xmlの内容をpstrOutputに吐き出しているつもりです。

Posted by: 瞳子 : 2005年03月22日 18:22

そういえば、プラグインフォルダの下には勝手にディレクトリばこばこ掘っちゃっても問題は無いのでしょうか?
設定とかいろいろ保存するための場所をプラグインに与えてやりたいのですが…

Posted by: 瞳子 : 2005年03月22日 16:14

> PluginGetInfoのIDの末尾がchannelで終わらないとダメなのは仕様ですか?
なんでも良いはずです。URL形式でなくても良いです。

> それ以降の関数についても仕様に追加されるのをお待ちしています。
ぼちぼちと追加していきます。

Posted by: MASATO : 2005年03月18日 22:34

とりあえず
http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=test%2Edll
PluginCreateChannelで画面出すところまでは作れましたので、それ以降の関数についても仕様に追加されるのをお待ちしています。

Posted by: 瞳子 : 2005年03月18日 11:49

原因判ったかも。

PluginGetInfoのIDの末尾が
channelで終わらないとダメなのは仕様ですか?

Posted by: 瞳子 : 2005年03月18日 11:44

> あとHeimdallr1.8なのにApp Verが1.7.0.0でした。
バグ報告ありがとうございます。
次のバージョンで直しておきます。

> Heimdallrプラグインのデバッグ&テスト用のアプリとか用意されてませんでしょうか?
無いのです。作ろうかとも思いましたが、Heimdallr直接使った方が楽そうだったのでそうしてしまいました。
DelphiとC(というかWin32 SDK)の型の違いから発生したエラーっぽいですね>アプリケーションエラー
私もCの型がどのようにDelphiにマッピングされるのか分からないのでなんとも・・・

Posted by: MASATO : 2005年03月17日 21:30

アプリケーションエラーに苦しめられてます~。
Heimdallrプラグインのデバッグ&テスト用のアプリとか用意されてませんでしょうか?

API単位で動作確認したいですし、ソース見てもC++いまいちわかりませんので動作で見たいです~

Posted by: 瞳子 : 2005年03月17日 18:33

__stdcall使わなかったためのエラーでした
Delphiで作っているのであまりソースから丸コピーできないのがつらい~
完成したらDelphiでの作り方の特集ページを書きます。

Posted by: 瞳子 : 2005年03月17日 14:22

作成したプラグインをプラグインフォルダに置いたところoffset: 7268eでエラー発生しました。

あとHeimdallr1.8なのにApp Verが1.7.0.0でした。

Posted by: 瞳子 : 2005年03月17日 13:33
コメントする









名前、アドレスを登録しますか?