使ってみよう! Windows Live SDK/API

第8回 Windows Live Writer ―― プラグインの作成 Part II

この記事を読むのに必要な時間:およそ 5 分

挿入プラグイン

前回はWindows Live Writer(WLW)のURL貼り付けを契機とし動作する少しマイナーなプラグインを作成しました。今回はWLWのプラグインとして代表的な挿入プラグインを作ります。

プラグインには大きく分類して2種類あります。ContentSourceクラスを継承したブログ記事にHTMLを挿入するだけの単純なものと,SmartContentSourceクラスを継承した挿入後もサイドバーを使って編集が可能なプラグインのふたつです。前者をシンプルなプラグイン,後者をスマートなプラグインと本記事では呼んでいます。また,サイドバーによる編集部分をサイドバーエディタと表現しています。

クラスの作成

本連載第7回「プロジェクトの作成」および「クラスの作成」にてWriterPlugin属性を指定するところまでは,ほぼ同様の作業になります。本記事と併せて参照してください。

Visual Studio 2008にてクラスライブラリのプロジェクトを作成し,WindowsLive.Writer.Api.dllを参照します。挿入プラグインの場合は,System.Windows.Formsも参照する必要があります。.NETタブから選択し参照を追加します図1)。

図1 System.Windows.Formsの参照

図1 System.Windows.Formsの参照

次にプラグインに共通して必要なWriterPlugin属性をクラスに指定します。ここまでが前回の内容と同じ部分です。サンプルコードはこの後示します。

InsertableContentSource属性

挿入プラグインを作るにはInsertableContentSource属性を付けます。パラメータは以下のとおりです。プラグイン名とは別に挿入するものの名称を指定します。

menuText 挿入メニューに表示される名前
SidebarText サイドバーの挿入項目に表示される名前(オプション)

ここまでのコードは次のようになります。このあと使用するシンプルなプラグインの場合を示しています。シンプルなプラグインの場合はContentSourceクラスを継承し,サイドバーにて編集できるプラグインの場合はSmartContentSourceクラスを継承します。GUID部分は適当に変更してください。

Imports WindowsLive.Writer.Api
<WriterPlugin("27328a8c-94d3-40b4-b369-1e6019e3571e", _
              "シンプル挿入プラグイン", _
              Description:="シンプルな挿入プラグインのサンプル", _
              HasEditableOptions:=False), _
 InsertableContentSource("Hello, world.")> _
Public Class SimplePlugin
    Inherits ContentSource ' シンプルなプラグインンの場合
    'Inherits SmartContentSource ' スマートプラグインの場合
End Class

シンプルな挿入プラグイン:「Hello, world」の挿入

まずはContentSourceクラスを使った「Hello, world.」と挿入するだけのプラグインを作成してみましょう。既に示したコードを使用します。ContentSourceクラスを使用した挿入プラグインに最低限 必要なメソッドはCreateContentメソッドのみです。ユーザがWLWで挿入する項目をクリックしたときこのメソッドが呼ばれます。CreateContentメソッドをオーバーライドします。

Public Overrides Function CreateContent(ByVal dialogOwner As System.Windows.Forms.IWin32Window, ByRef content As String) As System.Windows.Forms.DialogResult
    Return MyBase.CreateContent(dialogOwner, content)
End Function

CreateContentメソッドの引数にString型のcontentがあります。参照渡しになっており,この変数にブログ記事へ挿入するHTMLを格納します。戻り値にWindows.Forms.DialogResult.OKを返すことでcontentの内容が挿入されます。Windows.Forms.DialogResult.Cancelを返すと挿入はキャンセルされます。メソッド内を次のように変更します。

Public Overrides Function CreateContent(ByVal dialogOwner As System.Windows.Forms.IWin32Window, ByRef content As String) As System.Windows.Forms.DialogResult
    content = "Hello, world."
    Return Windows.Forms.DialogResult.OK
End Function

さっそく,このプラグインを実行してみましょう。ビルド後,できたDLLファイルをWLWのPluginsフォルダに配置します。配置に関しても前回の記事を参照してください。

WLWを起動するとメニューとサイドバーの挿入項目に「Hello, world.」が追加されていると思います図2)。クリックすると記事に「Hello, world.」という文字列が挿入されます。うまく動きましたでしょうか。もし項目がなければ,メニュー「ツール」「オプション」よりプラグインが有効になっているか確認してください。

図2 「Hello, world」挿入プラグイン

図2 「Hello, world」挿入プラグイン

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入