選択したメールアイテムの情報取得から発行まで

前回の続き。カスタム作業領域にWPFコントロールをホストした部分からです。
とりあえずWPFコントロールにはTextBlockを一つ配置しているとします。

WPFコントロールにTextBlockを更新するメソッドを追加する

テストコードなのでデータバインドとかせずにベタ書きしちゃいます。
メールアドレスを表示しましょう。

public void SyncMailItem(string mailAddress) {
    this.txbMailAddress.Text = mailAddress;
}

WPFコントロールをホストしているWebFormにも追加する

ただ中継しているだけですね。

public void SyncMailItem(string mailAddress) {
    // mainControl1はホストしているWPFコントロール
    this.mainControl1.SyncMailItem(mailAddress);
}

選択アイテムが変わるたびに発生するイベント

アドインの基本クラスThisAddIn.csに以下のようにイベントハンドラを追加します。
選択中のアイテムがメールアイテムの場合にのみメールアドレスを取得し、カスタム表示領域の表示を更新する。

private void ThisAddIn_Startup(object sender, System.EventArgs e) {
    explorer = this.Application.ActiveExplorer();
    explorer.SelectionChange += 
      new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(CurrentExplorer_Event);
}

private void CurrentExplorer_Event() {
    try {
        if (this.Application.ActiveExplorer().Selection.Count > 0) {
            Object selObject = this.Application.ActiveExplorer().Selection[1];
            if (selObject is Outlook.MailItem) {
                Outlook.MailItem mailItem =
                    (selObject as Outlook.MailItem);
                // カスタム表示領域に追加してあるWinFormであるcustomTaskPanelのSyncMailItemを呼び出す。
                // メールアドレスはmailItemのSenderEmailAddressで取得できる。
                customTaskPanel.SyncMailItem(mailItem.SenderEmailAddress);
            }
    } catch (Exception ex) {
        //
    }
}

はい、これでメールアイテムを選択するたびに、その送信元もメールアドレスが表示されるようになります。

最後に発行

さて、これを会社で試すにはインストーラを作る必要があります。なぜって、会社にはVisual Studio 2008もVSTOも無いからですよ。

  1. OutlookAddInプロジェクトのプロパティを開き、発行タブを選択します。
  2. Click-Oneceとか使うつもりは今のところ無いので発行フォルダはローカルを指定します。
  3. 必須コンポーネントが多少よくわかりませんが、デフォルトのままにしておきます。
  4. 「今すぐ発行」ボタンを押下し、発行します。
まずは削除

デバッグ時にすでにOutlookにはアドインが入ってしまっているので確認のためにまず削除します。

  1. ツール => セキュリティセンターを選択します。
  2. セキュリティセンターウィンドでアドインタブを選択します。
  3. ウィンド再下段の管理の部分で「COMアドイン」を選んだ状態で設定ボタンを押下します。
  4. 設定ウィンドで削除するアドインを選択し「削除」ボタンを押下します。
  5. 最後にOKを押下しOutlookを終了します。
インストールしてみよう

発行先にsetup.exeが生成されているので実行します。
おお、成功しましたね。
でも、会社にもっていってすぐ成功するかは微妙ですね。。きっと色々足りないっていわれるんだろうなー。