松崎 剛 Blog

This Blog's theme : エンタープライズ開発 (Server side)、Office サーバ開発

VSTO の新機能 : Outlook Form Region (Outlook フォーム領域)

VSTO の新機能 : Outlook Form Region (Outlook フォーム領域)

  • Comments 1

【環境】
Microsoft Office 2007 Enterprise
Visual Studio Codename Orcas (Beta 1)

Orcas  でみる VSTO の新機能

  1. リボンのデザインサポート
  2. Word コンテントコントロールのデータバインド
  3. ClickOnce
  4. Outlook フォーム リージョン (ここから Beta 1 を使っています、、、)
  5. VBA との相互運用
  6. SharePoint ワークフローの作成と配置の自動化

こんにちは。 

ご無沙汰してしまい申し訳ありません。ブログで途中までで止まっていた掲記のご紹介について、今日は、Outlook Form Region 開発の新機能についてご紹介しましょう。

以前、このブログでもとりあげましたが、デスクトップ上(クライアント)のキラーアプリであるメーラ (Microsoft Outlook 2007) の仕組みに、マネージコードを使用して、メールメッセージや連絡先リスト、タスクリストなどの情報と連携した機能を作りこんでいくことができます。

Building an Outlook 2007 Form Region with a Managed Add-In

Outlook 2007 Form Region のサンプルが動作しない場合の回避方法について
(ブログを記載していた当時は英語の情報しか掲載していませんでしたが、現在では、こちら に日本語のコンテンツ(9月20日更新)が掲載されています。) 

さて、上記の記事をみていただいてもお分かりの通り、開発は決してシンプルなものとは言い難いものでしたが、Orcas では、この開発が、さらにデザイナーなどを使って作りやすくなっています。さっそく、上記と同じようなサンプルを作ってみましょう。こんなに簡単になっています(↓)。

尚、私がもたもたしていたせいで、既に Orcas は Beta 1 が出ています。これまで March CTP を使用していましたが、ここからのサンプルは、Beta 1 の使用を想定しています。

  1. Outlook 2007 Add-in のプロジェクトを新規作成します。(以降のコードでは、Visual C# を使うことにしましょう)
  2. ソリューションエクスプローラからプロジェクトを選択し、[Add] - [New Item] で [Outlook Form Region] というアイテムを追加します。
    ここでウィザードが表示されますので、以下の通り設定します。
    • [Create a new Outlook Form region]
      ここでは、フォームリージョンのタイプを指定します。以前の FormRegionType と同じもので、[Separate] を選択すると、作成したフォームリージョン用にリボンのバーにボタンが追加され、これを押すと作成したフォーム画面に切り替わります。また、[Adjoining] を選択すると、既存のフォームの下に追加されて(並列で)表示されるようになります。
      上記のリンク(MSDN)でご紹介しているサンプルでは [Adjoining] を使っていましたが、今回は [Separate] を選んでみましょう。
    • [Supply descriptive text and select your display preference]
      ここでは、表示されるフォームの名前などを入力します。
    • [Identify the message classes that will display this form region]
      ここでは、どのメッセージクラス (例:メールの受信画面、連絡先の画面、など) に表示するかを選択します。(以下から選択できます)

      Appoint
      Contact
      Distribution List
      Journal Entry
      Mail Message
      Post
      RSS
      Task

      今回は、メール受信の画面に表示しますから、[Mail Message (IPM.Note)] を選びます。
  3. ウィザードを完了すると、フォームリージョン用のクラスファイル (cs ファイル) とコントロールのデザイナーが表示されます。このデザイナーにコントロールを配置して、コードビハインドのコードを記述します。
    今回は、MSDN の上記サンプル同様、テキストボックスに MIME ヘッダーを表示したいので、テキストボックスのコントロール (textBox1 とします) を貼り付け、プロパティ [Multiline] を True にしておきます。
  4. 作成されたフォームの cs ファイルを [View Code] でコード表示してください。すると、いくつかのイベントハンドラが既に記述されているはずです。
    画面表示時に、メッセージのMIMEヘッダーを取得してテキストボックスに設定するため、作成されている [フォーム名]_FormRegionShowing のスタブコードに以下の通りロジックを記述します。

    private void FormRegion1_FormRegionShowing(object sender, EventArgs e)
    {
        Outlook.MailItem mailItem = (Outlook.MailItem) this.OutlookItem;
        Outlook.PropertyAccessor propAccessor = mailItem.PropertyAccessor;
        string internetHeaders = (string)propAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E");
        textBox1.Text = internetHeaders;
    }
  5. F5 でデバッグ実行して終わりです。 

 

マネージコードですから、ワークフローエンジンと連携した機能なども可能でしょう。

上記では、Windows Form コントロールを使ったデザインでしたが、Outlook 上で作成した .ofs ファイルによるデザインも可能となる見込みです。ただし、Beta 1 時点では、このインポート機能は実装されていません。
また Outlook アイテムのデータとのバインドについては、上記の通り、コードを使って記載する必要があります。(バインドのための特別な仕組みは、今のところ予定されていません。)

が、このように、レジストリをごちゃごちゃといじったりといった必要はもうありません。上記でご紹介している現在の 2007 を使ったフォームリージョン(フォーム領域)開発と比較しても、非常に簡単に開発できるようになっていることがおわかり頂けるでしょう。

※ ここでは、Visual Studio Codename Orcas の Beta 1 を使用しています。使用されているクラスや機能は予告なく変更されることがありますのでご容赦ください。

 

関連ナンバー

 

Leave a Comment
  • Please add 8 and 2 and type the answer here:
  • Post