お問い合わせ
会社概要 ソフトウェア 開発ブログ サポート

« BlogWriteII Plugin unleashed | メイン | Pluginの作成(第二回) »

2005年06月18日

Pluginの作成(第一回)

[ BlogWrite ]

前回紹介したBlogWriteのプラグイン作成方法の解説第一回目です。早めに公開しておきます。

対象は、Delphiにある程度慣れている方です。

プラグイン作成に必要なもの

Borland Delphi Studio ver 6,7(注1) (注2)
ライブラリ:JEDI Visual Component Library ver 3.00 (注3)

(注1) Delphi6 PersonalEdition は無料でダウンロード出来ます。
(注2) Borland C++ Builder6でも可能です。
(注3) JVCL3には、大量のコンポーネントが含まれています。

手順

「新規作成」ー>「その他」、新規作成ダイアログで、「Projects」内の「Jv Plugin Wizard」 を起動します。

「Setup Plugin Parameters」という画面が表示されますので、そこで、プラグイン名、プラグインの説明、作者、著作権、ホストプロジェクト名(BlogWrite)を入力し、最後に、「DLL plugin」にチェックを入れます。

PlgPluginName.dprというプロジェクトファイルと、PluginPluginName.pasというユニットファイルが生成されます。幾つか変更点がありますので、それらを色付で表示します。

ソース

#PlgPluginName.dpr

library PlgPluginName;

uses
    //ShareMem コメントアウトします。代わりにメモリ効率とスピードが早い下のFastShareMemを使います。
    FastShareMem,(* 「ここ」 からダウンロード*)
    PluginPluginName;

{$R *.res}

exports
    RegisterPlugin;

begin
end.

次はユニットの方の編集です。PluginPluginName.pasを表示し、オブジェクトツリーの「Commands」右クリックで「項目の追加」を行うと、「Command1」が生成されます。オブジェクトインスペクタでこのプロパティを入力していきます。このコマンドはBlogWrite側でユーザーがクリックするボタンおよび、メニューとして表示されます。出来るだけアイコンも登録してください。ついで、OnExecuteで実行される処理を書きます。


#PluginPluginName.pas

unit PluginPluginName;

interface

uses
    Windows, Messages, SysUtils, Classes, Dialogs, Forms, Controls,JvPlugin;

type
    TPluginPluginName = class(TJvPlugin)
        procedure PluginPluginNameCommands0Execute(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
end;

function RegisterPlugin: TJvPlugin; stdcall;

implementation

{$R *.dfm}

// IMPORTANT NOTE: If you change the name of the Plugin container,
// you must set the type below to the same type. (Delphi changes
// the declaration, but not the procedure itself. Both the return
// type and the type created must be the same as the declared type above.

function RegisterPlugin: TJvPlugin;
begin
    Result := TPluginPluginName.Create(nil);
end;

procedure TPluginPluginName.PluginPluginNameCommands0Execute(Sender: TObject);
begin
    ShowMessage('クリックされました');
end;

end.

または、BlogWriteのエディタのHTMLを取得したい時は、基本的には下のようにします。(実際には他にも気にしなければならない点があります。例えばデザインモードではなく、HTMLエディタで編集中の場合などを考慮しなければなりません。これについては第二回以降で)

ユニットのUses節に、SHDocVw_TLB,MSHTML_TLB,ActiveX,ComObjを追加します。(MSHTML_TLBあたりのタイプライブラリは新たに生成する必要がある場合があります)

procedure TPluginPluginName.PluginPluginNameCommands0Execute(Sender: TObject);
var
    Comp1 : TComponent;
begin
    Comp1 :=Manager.Owner.FindComponent('MyWebBrowser1'); //Managerはホスト側のPluginManagerで、Manager.Ownerがいわゆるエディタ画面、呼び出し元のTFormとなります。MyWebBrowser1は本文編集タブのTWebBrowserのコンポーネント名です。
   
if Assigned(Comp1) then begin
        if TWebBrowser(Comp1).Visible then begin //デザインモードで編集中かどうか
            if Assigned(TWebBrowser(Comp1).Document) then begin
                if IHTMLDocument2(TWebBrowser(Comp1).Document).readyState = 'complete' then begin
                    ShowMessage(IHTMLDocument2(TWebBrowser(Comp).Document).body.innerHTML);
                end;
            end;
        end;
    end;
end;

基本的には以上で簡単なプラグインの完成です。コンパイルしたDLLをBlogWriteのPluginフォルダに入れて、BlogWriteのエディタを開くとプラグインを読み込みます。

(「画像の追加」ボタンの横に新規にボタンが追加されます。)

投稿者 BlogWrite担当 : 2005年06月18日 07:55

トラックバック

このエントリーのトラックバックURL:
http://www.witha.jp/b/mt-tb-hate-spam.cgi/271

このリストは、次のエントリーを参照しています: Pluginの作成(第一回):

» FastShareMem from tomomori ってなんだあ?
リンク: HepCat Dev and Test: Pluginの作成(第一回) [続きを読む]

トラックバック時刻: 2006年03月22日 15:12

コメント

コメントしてください




保存しますか?