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

第23回 Windows Live フォト ギャラリー ── はてなフォトライフ プラグインの作成 Part II

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

結果ウィンドウの表示

最後に結果ウィンドウの表示です。結果ウィンドウ自体はLiveアプリケーションが表示しますので,表示ボタンと詳細情報リンクの実装となります。今回は,表示ボタンのみ有効にし,クリックすると はてなフォトライフのWebページへ移動するようにします。

表示ボタンと詳細情報リンクの有効化はHasPublishResultsメソッドとHasSummaryInformationメソッドの戻り値の設定により行います。どちらのメソッドも戻り値がBoolean型で,Trueの場合対象のボタンまたはリンクが有効になります。

Public Function HasPublishResults(ByVal sessionXml As XmlDocument) As Boolean Implements IPublishPlugin.HasPublishResults
    ' 表示ボタン有効
    Return True
End Function

Public Function HasSummaryInformation(ByVal sessionXml As XmlDocument) As Boolean Implements IPublishPlugin.HasSummaryInformation
    ' 詳細情報リンク無効
    Return False
End Function

表示ボタンクリック時の動作はLaunchPublishResultsメソッドに記述します。引数はSession XMLです。

Public Sub LaunchPublishResults(ByVal sessionXml As XmlDocument) Implements IPublishPlugin.LaunchPublishResults
    Dim session = XDocument.Parse(sessionXml.InnerXml)
    Dim userName = session.<PhotoGalleryPublishSession>.<PublishParameters>.<UserName>.Value
    Try
        ' はてなフォトライフのユーザーページを開く
        Process.Start("http://f.hatena.ne.jp/" & userName)
    Catch ex As Exception
        ' Do nothing
    End Try
End Sub

詳細情報リンククリック時の動作はShowSummaryInformationメソッドに記述します。ウィンドウの表示が想定されているため引数には,Session XMLに加えIWin32Windowオブジェクトがあります。HasSummaryInformationメソッドでFalseを返すと,このメソッドが呼ばれることはありません。

Public Sub ShowSummaryInformation(ByVal parentWindow As IWin32Window, ByVal sessionXml As XmlDocument) Implements IPublishPlugin.ShowSummaryInformation
    ' 呼ばれない
End Sub

プラグインの実行

以上でLive フォト ギャラリーからはてなフォトライフへ写真のアップロードが可能になりました。実際に動かしてみましょう図8⁠。うまく動いたでしょうか?

図8 実行結果

図8 実行結果

もしセッション中に例外がスローされた場合はLiveアプリケーション側で吸収され詳細はわかりません。処理を細かく切り分けて失敗している原因を探すとよいでしょう。


次回もPhoto Gallery Publishing Plug-in Platformを利用したプラグイン作成の予定です。

著者プロフィール

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

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

URL:http://katamari.jp