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は無料なので良い感じです。
> ntdll.dllのメモリ管理周りの問題?っぽいのを回避できたのですが如何でしょうか?
落ちることはなくなりましたが、PluginGetInfoがFALSE(数値としては0)を返しているように見えます。
VC++のDebugモード、Releaseモード、ともにそうなります。
しかし、別のPCで(VC++を使わずに)試してみるとTRUEを返しているようです。
環境によってTRUEを返したりFALSEを返したりと不思議な挙動を見せています。謎ですね。
> plugin作るのって難しいですね~
今のところの難しさは、CとDelphiの違いに起因しているところがほとんどですねー。
本当に難しいのはこれからです。たぶん。^^;
でも1つ作ってしまえば2つ目以降は楽ですよ。
http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=test+%281%29%2Elzh
ntdll.dllのメモリ管理周りの問題?っぽいのを回避できたのですが如何でしょうか?
これでもPluginGetInfoで落ちますでしょうか?
これで大丈夫そうならPluginStoreChannelInfoとPluginLoadChannelInfo以外の部分は本実装固めてみようと思います。
plugin作るのって難しいですね~
HeimdallrをDebugモードで実行すると、最初のPluginGetInfoで落ちます。
Releaseモードで実行すると、PluginGetInfoは問題ありません。
ううむ良く分からない動作をしますね。
とりあえずReleaseモードで見ていますが、
PluginGetInfoが呼び出されるところまでたどり着けない状況です。
PluginCreateChannelが呼び出されるところは見てダイアログが表示されることは確認したのですが、どうもこの関数がfalseを返すようです。何か操作が足りないのでしょうか?
推測ですが、PluginGetInfo関数の型が仕様と異なるのではないかと思います。
ここらへんがおかしいと動作が不安定になり、落ちたり落ちなかったりするようになる恐れがあります。
PluginGetChannelにも問題があるのかもしれませんが、
Debugモードで実行すると、最初のPluginGetInfoで落ちるというのはおかしいので、とりあえずこれから解決していった方が良いのではないかと思います。
http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=test%2Elzh
PluginGetChannelでHeimdallrが強制終了してしまうです(泣
原因を教えていただけると助かります。
やっていることは
plugin/test/gettest.xmlの内容をpstrOutputに吐き出しているつもりです。
そういえば、プラグインフォルダの下には勝手にディレクトリばこばこ掘っちゃっても問題は無いのでしょうか?
設定とかいろいろ保存するための場所をプラグインに与えてやりたいのですが…
> PluginGetInfoのIDの末尾がchannelで終わらないとダメなのは仕様ですか?
なんでも良いはずです。URL形式でなくても良いです。
> それ以降の関数についても仕様に追加されるのをお待ちしています。
ぼちぼちと追加していきます。
とりあえず
http://heimdallr.info/wiki.cgi?action=ATTACH&page=ChannelExtensionPluginAPI%BB%C5%CD%CD&file=test%2Edll
PluginCreateChannelで画面出すところまでは作れましたので、それ以降の関数についても仕様に追加されるのをお待ちしています。
原因判ったかも。
PluginGetInfoのIDの末尾が
channelで終わらないとダメなのは仕様ですか?
> あとHeimdallr1.8なのにApp Verが1.7.0.0でした。
バグ報告ありがとうございます。
次のバージョンで直しておきます。
> Heimdallrプラグインのデバッグ&テスト用のアプリとか用意されてませんでしょうか?
無いのです。作ろうかとも思いましたが、Heimdallr直接使った方が楽そうだったのでそうしてしまいました。
DelphiとC(というかWin32 SDK)の型の違いから発生したエラーっぽいですね>アプリケーションエラー
私もCの型がどのようにDelphiにマッピングされるのか分からないのでなんとも・・・
アプリケーションエラーに苦しめられてます~。
Heimdallrプラグインのデバッグ&テスト用のアプリとか用意されてませんでしょうか?
API単位で動作確認したいですし、ソース見てもC++いまいちわかりませんので動作で見たいです~
__stdcall使わなかったためのエラーでした
Delphiで作っているのであまりソースから丸コピーできないのがつらい~
完成したらDelphiでの作り方の特集ページを書きます。
作成したプラグインをプラグインフォルダに置いたところoffset: 7268eでエラー発生しました。
あとHeimdallr1.8なのにApp Verが1.7.0.0でした。