Outlook 2010 のユーザー インターフェイスの拡張

概要: Microsoft Office Fluent ユーザー インターフェイス (UI) をプログラムによって拡張して Microsoft Outlook 2010 の UI をカスタマイズする方法を学習します。Microsoft Office 2010 の Fluent UI には、Office Fluent リボン、メニュー、および Microsoft Office Backstage ビューが含まれます。ここでは、Outlook 2010 UI のエクスプローラーとインスペクターのリボン、メニューとショートカット メニュー、および Backstage ビューをカスタマイズする方法を説明します。リボン、ショートカット メニュー、および Backstage ビューの具体的なカスタマイズ方法をコード サンプルで示し、Outlook 2010 の UI に関して特に注意が必要な点を詳しく解説します。

適用対象: Office 2010 | Outlook 2010 | Visual Studio

この記事の内容
概要
サンプル アドイン
リボン ID
エクスプローラー
インスペクター
フォルダーのショートカット メニュー
ルート検索フォルダーのショートカット メニュー
ストアのショートカット メニュー
メール アイテムのショートカット メニュー
複数選択されたアイテムのショートカット メニュー
予定または会議出席依頼のショートカット メニュー
タスク アイテムのショートカット メニュー
連絡先アイテムのショートカット メニュー
履歴アイテムのショートカット メニュー
メモ アイテムのショートカット メニュー
ショートカットのショートカット メニュー
添付ファイルのショートカット メニュー
表ビューのショートカット メニュー
予定表ビューのショートカット メニュー
カード ビューのショートカット メニュー
時間帯ビューのショートカット メニュー
[並べ替え] コマンドのメニュー
時刻バーのショートカット メニュー
空き時間情報バーのショートカット メニュー
表ビュー列のショートカット メニュー
分類のショートカット メニュー
クイック フラグのショートカット メニュー
フラグ付きメール アイテムのショートカット メニュー
フラグ付き連絡先アイテムのショートカット メニュー
メール モジュールの [新しいアイテム] メニュー
予定表モジュールの [新しいアイテム] メニュー
連絡先モジュールの [新しいアイテム] メニュー
タスク モジュールの [新しいアイテム] メニュー
履歴モジュールの [新しいアイテム] メニュー
メモ モジュールの [新しいアイテム] メニュー
差出人または受信者の個人用ショートカット メニュー
その他の連絡手段用のメニュー
操作別タブ
Backstage ビュー
まとめ
その他の技術情報

目次

-
概要

-
サンプル アドイン

-
リボン ID

-
エクスプローラー

-
インスペクター

-
フォルダーのショートカット メニュー

-
ルート検索フォルダーのショートカット メニュー

-
ストアのショートカット メニュー

-
メール アイテムのショートカット メニュー

-
複数選択されたアイテムのショートカット メニュー

-
予定または会議出席依頼のショートカット メニュー

-
タスク アイテムのショートカット メニュー

-
連絡先アイテムのショートカット メニュー

-
履歴アイテムのショートカット メニュー

-
メモ アイテムのショートカット メニュー

-
ショートカットのショートカット メニュー

-
添付ファイルのショートカット メニュー

-
表ビューのショートカット メニュー

-
予定表ビューのショートカット メニュー

-
カード ビューのショートカット メニュー

-
時間帯ビューのショートカット メニュー

-
[並べ替え] コマンドのメニュー

-
時刻バーのショートカット メニュー

-
空き時間情報バーのショートカット メニュー

-
表ビュー列のショートカット メニュー

-
分類のショートカット メニュー

-
クイック フラグのショートカット メニュー

-
フラグ付きメール アイテムのショートカット メニュー

-
フラグ付き連絡先アイテムのショートカット メニュー

-
メール モジュールの [新しいアイテム] メニュー

-
予定表モジュールの [新しいアイテム] メニュー

-
連絡先モジュールの [新しいアイテム] メニュー

-
タスク モジュールの [新しいアイテム] メニュー

-
履歴モジュールの [新しいアイテム] メニュー

-
メモ モジュールの [新しいアイテム] メニュー

-
差出人または受信者の個人用ショートカット メニュー

-
その他の連絡手段用のメニュー

-
操作別タブ

-
Backstage ビュー

-
まとめ

-
その他の技術情報

概要

ここでは、Outlook 2010 UI の以下の要素をプログラムによってカスタマイズできる、多くの新しい方法について説明します。

  • エクスプローラー リボン

  • インスペクター リボン

  • ショートカット メニュー

  • [新しいアイテム] メニュー

  • 連絡先カードのショートカット メニュー

  • 操作別タブ

  • Backstage ビュー

具体的には、Fluent UI 機能拡張を使用してこれらの要素の各コンポーネントをカスタマイズする方法について説明します。最初に、IRibbonExtensibility (英語) インターフェイスの GetCustomUI (英語) メソッドに XML マークアップを用意する必要があります。カスタマイズするコンポーネントのリボン ID を使用して、GetCustomUI メソッドで戻り値として渡す XML を決定します。一般にこの XML では、ボタンのクリックに応答したり、リボン コントロールの表示を制御したりするためのコールバックを提供します。

この記事では、Fluent UI 機能拡張コールバックをコードに作成する際に使用する IRibbonControl.Context (英語) プロパティの一覧を示します。また、各 UI コンポーネント向けのサンプル XML マークアップと、このカスタマイズが Outlook 2010 UI のどの位置に表示されるのかがすぐにわかる UI コンポーネントのスクリーンショットも含まれています。

注意

ここで使用するリボン ID とコンポーネントは、Outlook 2010 の最終リリースで変更される可能性があります。また、インストールされている Microsoft Office 2010 スイートや選択されている Outlook アイテムの種類によって、メニューまたはショートカット メニューに表示されるメニュー項目が異なることもあります。

この記事を読み進めるには、アドインを使用して Fluent UI を拡張する方法の基礎を理解している必要があります。Fluent UI 機能拡張を十分に理解していない場合は、後の「その他の技術情報」に記載されている技術記事を参照してください。

サンプル アドイン

この記事には、RibbonXOutlook14AddinCS という名前のサンプル アドインが付属します。このアドインは Microsoft Visual C# を使用し、実行には Microsoft Visual Studio 2008 Service Pack 1 と Outlook 2010 が必要です。

概要

サンプル アドインは、Outlook 2010 のリボン、メニュー、ショートカット メニュー、および Backstage ビューをカスタマイズする具体的な方法を示します。Office 用 Visual Studio 2008 ツール で開発されたこのアドインは、リボン コントロール、ユーザー設定メニュー、ショートカット メニュー項目、および Backstage ビュー コントロールを追加し、コントロールまたはメニュー項目がクリックされたときにメッセージ ボックスを表示します。また、Fluent UI 機能拡張を使用してカスタマイズできる Outlook 2010 UI の各エントリ ポイントを表す視覚的な要素も提供します。

サンプル アドインには、Outlook 2010 UI における特定の問題領域に対処する方法を具体的に示す追加の機能があります。たとえば、受信した電子メール アイテムのリボンにのみ、ユーザー設定グループを表示すると仮定します。サンプル アドインは、Outlook エクスプローラーで選択されているアイテムが受信されたメール アイテムである場合と、受信されたメール アイテムがインスペクターに表示されている場合にのみ、ユーザー設定リボン タブを表示します。ささいなタスクのようですが、実際にはこれは複雑な問題です。Outlook では複数のエクスプローラーとインスペクターのウィンドウを表示できるので、このような状況にも適切に対応できることがコードに求められます。たとえば、エクスプローラー ウィンドウが 2 つ表示されているなら、会議が選択されているウィンドウではユーザー設定タブを非表示にし、受信されたメール アイテムが選択されているウィンドウではユーザー設定タブを表示する必要があります。サンプル アドインの動作を理解すれば、サンプルで使用されるラッパー クラスを利用して、複数の Outlook ウィンドウで独自のコマンド UI の表示を調整できるソリューションを独自に作成できます。

インストール手順

サンプル コードのインストール パッケージをダウンロードするには

  1. RibbonXOutlook14AddinCS.zip ファイルを MSDN Code Gallery (英語) Web サイトからダウンロードします。

  2. .zip ファイルを任意のフォルダーに展開します。Windows Vista では、Office 用 Visual Studio 2008 ツール プロジェクトの既定のパスは、 C:\Users\user\Documents\Visual Studio 2008\Projects です。

Outlook リボン機能拡張のサンプルを実行するには

  1. Outlook 2010 を閉じます。

  2. RibbonXOutlook14AddinCS.zip ファイルを展開したフォルダーで、RibbonXOutlook14AddinCS ソリューションを開きます。

  3. [ビルド] メニューの [RibbonXOutlook14AddinCS のビルド] をクリックします。

  4. Outlook 2010 を起動して、このアドインを実行モードで起動するか、F5 キーを押してデバッグ モードで起動します。Outlook がデバッグ モードで起動しない場合は、以下の手順を実行します。

デバッグ モードで Outlook を起動するには

  1. ソリューション エクスプローラーで、[RibbonXOutlook14AddinCS] を選択します。

  2. [プロジェクト] メニューの [RibbonXOutlook14AddinCS のプロパティ] を選択し、次に [デバッグ] タブをクリックします。

  3. [開始動作] の [外部プログラムの開始] オプションを選択し、[参照] をクリックします。

  4. [ドライブ:]\Program Files\Microsoft Office\Office14 フォルダーで Outlook.exe を選択します。

  5. F5 キーを押して、デバッグ モードでアドインを開始します。

コード ウォークスルー

Outlook14RibbonXAddinCS ソリューションは、Microsoft Visual Studio 2008 Service Pack 1 を使用してビルドされました。このソリューションでは、Visual Studio Tools for Office に付属するリボン デザイナーは使用せず、XML マークアップ ファイルを手動で作成する方法を使用します。アーキテクチャの点で最も重要な機能は、ラッパー クラス (エクスプローラー用の OutlookExplorer.cs とインスペクター用の OutlookInspector.cs) を使用して複数の Outlook ウィンドウを操作することです。ラッパー クラスの実装には、C# の汎用 List(T) クラスを使用します。

注意

マネージ コードを作成しない場合は、これらのラッパー クラスの使用方法を模倣するネイティブ C++ コードを作成する必要があります。

最初に、次のクラスレベルのインスタンス変数を Office 用の Visual Studio ツールを備えた Visual Studio 2008 で標準 ThisAddin クラスに宣言します。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

namespace RibbonXOutlook14AddinCS
{
    public partial class ThisAddIn
    {
        #region Instance Variables
        Outlook.Application m_Application;             
        Outlook.Explorers m_Explorers;
        Outlook.Inspectors m_Inspectors;
        public stdole.IPictureDisp m_pictdisp = null;
        // List of tracked explorer windows.         
        internal static List<OutlookExplorer> m_Windows;
        // List of traced inspector windows.
        internal static List<OutlookInspector> m_InspectorWindows;
        // Ribbon UI reference.
        internal static Office.IRibbonUI m_Ribbon;
        #endregion
        ...
    }
}

この宣言によって、インスタンス変数は、すべての Office 用の Visual Studio ツールを備えた Visual Studio 2008 アドインに提供される ThisAddin クラスの Startup メソッドで使用できるようになります。Startup メソッドは、通常、Outlook の起動時に呼び出されます。このメソッドのコードでは、Outlook Explorers (英語) コレクション オブジェクトの NewExplorer (英語) イベントに応答するイベント ハンドラーを最初にフックします。NewExplorer イベントを処理した後で、次のコードを使用してアクティブなエクスプローラー ウィンドウを追加します。

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    // Initialize variables.
    m_Application = this.Application;
    m_Explorers = m_Application.Explorers;
    m_Inspectors = m_Application.Inspectors;
    m_Windows = new List<OutlookExplorer>();
    m_InspectorWindows = new List<OutlookInspector>();

    // Wire up event handlers to handle multiple Explorer windows.
    m_Explorers.NewExplorer += 
        new Outlook.ExplorersEvents_NewExplorerEventHandler(
            m_Explorers_NewExplorer);
    // Wire up event handler to handle multiple Inspector windows.
    m_Inspectors.NewInspector += 
        new Outlook.InspectorsEvents_NewInspectorEventHandler(
            m_Inspectors_NewInspector);
    // Add the ActiveExplorer to m_Windows.
    Outlook.Explorer expl = m_Application.ActiveExplorer()
        as Outlook.Explorer;
    OutlookExplorer window = new OutlookExplorer(expl);
    m_Windows.Add(window);
    // Hook up event handlers for window.
    window.Close += new EventHandler(WrappedWindow_Close);
    window.InvalidateControl += new EventHandler<
        OutlookExplorer.InvalidateEventArgs>(
        WrappedWindow_InvalidateControl);
    // Get IPictureDisp for CurrentUser on startup.
    try
    {
        Outlook.AddressEntry addrEntry = 
            Globals.ThisAddIn.Application.Session.CurrentUser.AddressEntry;
        if (addrEntry.Type == "EX")
        {
            Outlook.ExchangeUser exchUser = 
                addrEntry.GetExchangeUser() as Outlook.ExchangeUser;
            m_pictdisp = exchUser.GetPicture() as stdole.IPictureDisp;
        }
    }
    catch (Exception ex)
    {
        // Write exception to debug window.
        Debug.WriteLine(ex.Message);
    }
}

Outlook が起動した直後に GetCustomUI が呼び出されます。GetCustomUI は、IRibbonExtensibility インターフェイスのメソッドであり、カスタム XML マークアップを読み込みます。Outlook 2007 では、特定のインスペクターの種類 (連絡先、予定など) の最初のインスタンスが表示されるときに、GetCustomUI が呼び出されました。Outlook 2010 では、ThisAddin.Startup メソッドの前に GetCustomUI が呼び出され、Outlook エクスプローラー リボンのリボン カスタマイズが読み込まれます。Office から GetCustomUI が呼び出されるのは、起動時に最初の Outlook エクスプローラーについては 1 回のみですが、インスペクターの最初のインスタンスについてはインスペクターの種類が複数あることから複数回となるので、カスタマイズしたリボンの種類別に XML マークアップの読み込みを制御するために Switch ステートメントを使用することに注意してください。Outlook のリボンごとに、GetCustomUI が呼び出され、Office から Outlook に読み込まれるリボンを識別するリボン ID 文字列が渡されます。リボン ID の完全な一覧については、後の「リボン ID」を参照してください。

サンプル コードには、以下の 3 つの XML マークアップ ファイルがあります。

  • ContactCard.xml

  • Explorer.xml

  • ReadMail.xml

ContactCard.xml には、連絡先カードのショートカット メニュー用の XML マークアップが含まれます。Explorer.xml には、エクスプローラーのリボン、ショートカット メニュー、および Backstage ビュー用の XML マークアップが含まれます。Readmail.xml には、メールの開封インスペクター用の XML マークアップが含まれます。

この方法の仕組みをより深く理解するには、OutlookRibbonX クラスの GetCustomUI メソッドにある以下のコードを調べてください。

        
public string GetCustomUI(string ribbonID)
{
    string customUI = string.Empty;
    Debug.WriteLine(ribbonID);
    // Return the appropriate XML markup for ribbonID.
    switch (ribbonID)
    {
        case "Microsoft.Outlook.Explorer":
            customUI = GetResourceText( 
                "RibbonXOutlook14AddinCS.Explorer.xml");
            return customUI;
        case "Microsoft.Outlook.Mail.Read":
            customUI= GetResourceText(
                "RibbonXOutlook14AddinCS.ReadMail.xml");
            return customUI;
        case "Microsoft.Mso.IMLayerUI":
            customUI = GetResourceText(
                "RibbonXOutlook14AddinCS.ContactCard.xml");
            return customUI;
        default:
            return string.Empty;
    }
}

ContactCard.xml、Explorer.xml、および ReadMail.xml の完全なコード リストについては、サンプル ソリューションを参照してください。各アドインのカスタム XML マークアップの読み込みを終えたら、次に、エクスプローラーで選択されているアイテムが受信されたメール アイテムかどうかによって [MyTab] という名前のタブの表示と非表示を制御するコードを Fluent UI 機能拡張コールバックに作成します。このシナリオを完成するには、別の一連のイベントを OutlookExplorer クラスのコンストラクターにフックする必要があります。

        
public OutlookExplorer(Outlook.Explorer explorer)
{
    m_Window = explorer;
        
    // Hook up Close event.
    ((Outlook.ExplorerEvents_Event)explorer).Close +=
        new Outlook.ExplorerEvents_CloseEventHandler(
        OutlookExplorerWindow_Close);

    // Hook up SelectionChange event.
    m_Window.SelectionChange += 
        new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(
        m_Window_SelectionChange);
}

SelectionChange イベント ハンドラーは、非常に単純です。SelectionChange イベントは、ユーザーがエクスプローラー ウィンドウで選択項目を変更すると発生します。SelectionChange が発生すると、RaiseInvalidateControl メソッドが呼び出され、コントロール ID "MyTab" がこのメソッドに渡されます。RaiseInvalidateControl では、ThisAddin クラスの WrappedWindow_InvalidateControl イベント デリゲートを呼び出します。 

        
private void m_Window_SelectionChange()
{
    RaiseInvalidateControl("MyTab");
} 
void WrappedWindow_InvalidateControl(object sender,
    OutlookExplorer.InvalidateEventArgs e)
{
    if (m_Ribbon != null)
    {
        m_Ribbon.InvalidateControl(e.ControlID);
    }
}

m_Ribbon 変数は、IRibbonUI オブジェクトを表します。IRibbonUI オブジェクトの InvalidateControl メソッドが呼び出されると、"MyTab" コントロールに対してリボン コールバックが発生します。IRibbonUI の Invalidate メソッドを呼び出す方法もありますが、このメソッドを使用するとカスタム アドインからリボンに追加されるすべてのコントロールのコールバックが発生します。一般に、無効化は全体に適用するのではなく、より細かい単位で制御してください。コールバックで getImage コールバックを使用してイメージ リソースを読み込む場合は、特にその必要があります。"MyTab" コントロールについては、タブの表示を制御する getVisible コールバックが RibbonXAddin クラスに定義されています。getVisible コールバックが True を返すと、タブは表示されます。それ以外の値を返すと、"MyTab" は非表示となります。以下のコードは、MyTab_GetVisible コールバックの完全な内容です。

        
// Only show MyTab when explorer selection is 
// a received mail or when inspector is a read note.
public bool MyTab_GetVisible(Office.IRibbonControl control)
{
    if (control.Context is Outlook.Explorer)
    {
        Outlook.Explorer explorer = 
            control.Context as Outlook.Explorer;
        Outlook.Selection selection = explorer.Selection;
        if (selection.Count == 1)
        {
            if (selection[1] is Outlook.MailItem)
            {
                Outlook.MailItem oMail = 
                    selection[1] as Outlook.MailItem;
                if (oMail.Sent == true)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else if (control.Context is Outlook.Inspector)
    {
        Outlook.Inspector oInsp = 
            control.Context as Outlook.Inspector;
        if (oInsp.CurrentItem is Outlook.MailItem)
        {
            Outlook.MailItem oMail = 
                oInsp.CurrentItem as Outlook.MailItem;
            if (oMail.Sent == true)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else
    {
        return true;
    }
}

このウォークスルーでは、Outlook 2010 でリボンを拡張する際に最も重要な戦略について詳しく説明します。要点をまとめると、コードでは以下の機能をサポートする必要があります。

  • Outlook 2010 では、複数のエクスプローラーまたはインスペクターのウィンドウが使用されます。ウィンドウを個別のクラス インスタンスでラップして、イベントを特定のウィンドウに関連付けて生成できるようにします。

  • IRibbonUI インターフェイスの InvalidateControl メソッドまたは Invalidate メソッドを正しく使用して、コールバックが発生するようにします。

  • イベント ハンドラーとリボン コールバックの両方で、複数のアイテムの種類を (特定のアイテムの種類のメッセージ クラス、組み込みのプロパティ、またはカスタム プロパティに基づいて) 評価します。

リボン ID

次の表に、IRibbonExtensibility インターフェイスの GetCustomUI メソッドに渡されるリボン ID の一覧を示します。リボン ID は、GetCustomUI メソッドから返す XML を決定するために使用します。

表 1. リボン ID およびメッセージ クラス

リボン ID

メッセージ クラス

Microsoft.OMS.MMS.Compose

IPM.Note.Mobile.MMS.*

Microsoft.OMS.MMS.Read

IPM.Note.Mobile.MMS.*

Microsoft.OMS.SMS.Compose

IPM.Note.Mobile.SMS.*

Microsoft.OMS.SMS.Read

IPM.Note.Mobile.SMS.*

Microsoft.Outlook.Appointment

IPM.Appointment.*

Microsoft.Outlook.Contact

IPM.Contact.*

Microsoft.Outlook.DistributionList

IPM.DistList.*

Microsoft.Outlook.Journal

IPM.Activity.*

Microsoft.Outlook.Mail.Compose

IPM.Note.*

Microsoft.Outlook.Mail.Read

IPM.Note.*

Microsoft.Outlook.MeetingRequest.Read

IPM.Schedule.Meeting.Request または IPM.Schedule.Meeting.Canceled

Microsoft.Outlook.MeetingRequest.Send

IPM.Schedule.Meeting.Request

Microsoft.Outlook.Post.Compose

IPM.Post.*

Microsoft.Outlook.Post.Read

IPM.Post.*

Microsoft.Outlook.Report

IPM.Report.*

Microsoft.Outlook.Resend

IPM.Resend.*

Microsoft.Outlook.Response.Compose

IPM.Schedule.Meeting.Resp.*

Microsoft.Outlook.Response.CounterPropose

IPM.Schedule.Meeting.Resp.*

Microsoft.Outlook.Response.Read

IPM.Schedule.Meeting.Resp.*

Microsoft.Outlook.RSS

IPM.Post.Rss.*

Microsoft.Outlook.Sharing.Compose

IPM.Sharing.*

Microsoft.Outlook.Sharing.Read

IPM.Sharing.*

Microsoft.Outlook.Task

IPM.Task.* および IPM.TaskRequest.*

Microsoft.Outlook.Explorer

該当なし。このリボン ID は、エクスプローラー リボン、ショートカット メニュー、または Backstage ビュー用の XML マークアップを返すために使用します。

エクスプローラー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer (英語) オブジェクト

備考

Outlook 2010 では、起動時に IRibbonExtensibility インターフェイスの GetCustomUI メソッドが呼び出され、アドイン用のリボン ID が RibbonID パラメーターに指定されます。アドインには、GetCustomUI メソッドが実装されている必要があります。たとえば、RibbonID が Microsoft.Outlook.Explorer である場合、GetCustomUI はエクスプローラーとショートカット メニューのカスタマイズ用の XML マークアップを返します。

XML マークアップの例

  
<ribbon>
    <tabs>
        <tab id="MyTab"
            getVisible="MyTab_GetVisible"
            label="MyTab">
            <group label="MyGroup" id="MyGroup">
                <button id="MyButton"
                    size="large"
                    label="MyButton"
                    imageMso="HappyFace"
                    onAction="OnMyButtonClick"/>
            </group>
        </tab>
    </tabs>
</ribbon>

ユーザー インターフェイスの例

図 1. エクスプローラー リボンの展開

エクスプローラー リボンの展開

インスペクター

リボン ID

Outlook では、異なるアイテムの種類を表示する複数のリボンがインスペクターにサポートされています。インスペクターに表示するアイテムのメッセージ クラスによって、Outlook から適切なリボン ID が RibbonID パラメーターとして GetCustomUI メソッドに渡されることをアドインは前提とします。

表 2. リボン ID とメッセージ クラス

リボン ID

メッセージ クラス

Microsoft.OMS.MMS.Compose

IPM.Note.Mobile.MMS.*

Microsoft.OMS.MMS.Read

IPM.Note.Mobile.MMS.*

Microsoft.OMS.SMS.Compose

IPM.Note.Mobile.SMS.*

Microsoft.OMS.SMS.Read

IPM.Note.Mobile.SMS.*

Microsoft.Outlook.Appointment

IPM.Appointment.*

Microsoft.Outlook.Contact

IPM.Contact.*

Microsoft.Outlook.DistributionList

IPM.DistList.*

Microsoft.Outlook.Journal

IPM.Activity.*

Microsoft.Outlook.Mail.Compose

IPM.Note.*

Microsoft.Outlook.Mail.Read

IPM.Note.*

Microsoft.Outlook.MeetingRequest.Read

IPM.Schedule.Meeting.Request または IPM.Schedule.Meeting.Canceled

Microsoft.Outlook.MeetingRequest.Send

IPM.Schedule.Meeting.Request

Microsoft.Outlook.Post.Compose

IPM.Post.*

Microsoft.Outlook.Post.Read

IPM.Post.*

Microsoft.Outlook.Report

IPM.Report.*

Microsoft.Outlook.Resend

IPM.Resend.*

Microsoft.Outlook.Response.Compose

IPM.Schedule.Meeting.Resp.*

Microsoft.Outlook.Response.CounterPropose

IPM.Schedule.Meeting.Resp.*

Microsoft.Outlook.Response.Read

IPM.Schedule.Meeting.Resp.*

Microsoft.Outlook.RSS

IPM.Post.Rss.*

Microsoft.Outlook.Sharing.Compose

IPM.Sharing.*

Microsoft.Outlook.Sharing.Read

IPM.Sharing.*

Microsoft.Outlook.Task

IPM.Task.* および IPM.TaskRequest.*

IRibbonControl.Context

Inspector (英語) オブジェクト

備考

Outlook 2010 で組み込みのメッセージ クラスを使用して最初のインスペクターを表示する場合、Outlook では IRibbonExtensibility インターフェイスの GetCustomUI メソッドが呼び出され、アドイン用のリボン ID が RibbonID パラメーターに指定されます。アドインには、GetCustomUI メソッドを実装して、GetCustomUI から RibbonID に基づいて適切な XML マークアップが返されるようにします。

Inspector オブジェクトの CurrentItem (英語) プロパティを使用して、MailItem (英語)AppointmentItem (英語)ContactItem (英語)TaskItem (英語) など、アイテム レベルのオブジェクトを返します。

XML マークアップの例

  
<ribbon>
    <tabs>
        <tab id="MyTab"
            getVisible="MyTab_GetVisible"
            label="MyTab">
            <group label="MyGroup" id="MyGroup" >
                <button id="MyButton"
                    size="large"
                    label="MyButton"
                    imageMso="HappyFace"
                    onAction="OnMyButtonClick"/>
            </group>
        </tab>
    </tabs>
</ribbon>

ユーザー インターフェイスの例

図 2. インスペクター リボンの展開

インスペクター リボンの展開

フォルダーのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Folder (英語) オブジェクト

備考:

Outlook 2010 で以下のショートカット メニューが表示されるのは、ナビゲーション ウィンドウの [フォルダー一覧] 内のフォルダーが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuFolder">
        <button id="MyContextMenuFolder"
            label="ContextMenuFolder"
            onAction="OnMyButtonClick" />
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 3. [フォルダー一覧] 内のフォルダーのショートカット メニューの展開

フォルダーのショートカット メニューの展開

ルート検索フォルダーのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Folder オブジェクト

備考:

Outlook 2010 で以下のショートカット メニューが表示されるのは、ナビゲーション ウィンドウの [フォルダー一覧] でルート検索フォルダーである [検索フォルダー] が選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuSearchRoot">
        <button id="MyContextMenuSearchRoot"
            label="ContextMenuSearchRoot"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 4. ルート検索フォルダーのショートカット メニューの展開

ルート検索フォルダーのショートカット メニューの展開

ストアのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Store (英語) オブジェクト

備考:

Outlook 2010 で以下のショートカット メニューが表示されるのは、ナビゲーション ウィンドウの [フォルダー一覧] でストア フォルダーが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuStore">
        <button id="MyContextMenuStore"
            label="ContextMenuStore"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 5. ストア フォルダーのショートカット メニューの展開

ストア フォルダーのショートカット メニューの展開

メール アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection (英語) オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在のビューでメール アイテムが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuMailItem">
        <button id="MyContextMenuMailItem"
            label="ContextMenuMailItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 6. メール アイテムのショートカット メニューの展開

メール アイテムのショートカット メニューの展開

複数選択されたアイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在のビューで複数のアイテムが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuMultipleItems">
        <button id="MyContextMenuMultipleItems"
            label="ContextMenuMultipleItems"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 7. 複数選択されたアイテムのショートカット メニューの展開

複数選択されたアイテムのショートカット メニューの展開

予定または会議出席依頼のショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在の予定表ビューで予定または会議出席依頼が選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuCalendarItem">
        <button id="MyContextMenuCalendarItem"
            label="ContextMenuCalendarItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 8. 会議の開催者の予定表に表示される会議出席依頼のショートカット メニューの展開

ミーティング要求のショートカット メニューの展開

タスク アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在のタスク ビューでタスク アイテムが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuTaskItem">
        <button id="MyContextMenuTaskItem"
            label="ContextMenuTaskItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 9. タスク アイテムのショートカット メニューの展開

タスク アイテムのショートカット メニューの展開

連絡先アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在のビューで連絡先アイテムが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuContactItem">
        <button id="MyContextMenuContactItem"
            label="ContextMenuContactItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 10. 連絡先アイテムのショートカット メニューの展開

連絡先アイテムのショートカット メニューの展開

履歴アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在のビューで履歴アイテムが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuJournalItem">
        <button id="MyContextMenuJournalItem" 
            label="ContextMenuJournalItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 11. 履歴アイテムのショートカット メニューの展開

ジャーナル アイテムのショートカット メニューの展開

メモ アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、現在のビューでメモ アイテムが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuNoteItem">
        <button id="MyContextMenuNoteItem"
            label="ContextMenuNoteItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 12. メモ アイテムのショートカット メニューの展開

ノート アイテムのショートカット メニューの展開

ショートカットのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

OutlookBarShortcut (英語) オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、ショートカット モジュールでショートカットが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuShortcut">
        <button id="MyContextMenuShortcut"
            label="ContextMenuShortcut"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 13. ショートカット モジュール内のショートカットのショートカット メニューの展開

ショートカットのコンテキスト メニューの展開

添付ファイルのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

AttachmentSelection (英語) オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、エクスプローラーまたはインスペクターの閲覧ウィンドウで 1 つ以上の添付ファイルが選択されているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuAttachment">
        <button id="MyContextMenuAttachment"
            label="ContextMenuAttachment"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 14. 閲覧ウィンドウ内の添付ファイルのショートカット メニューの展開

添付物のショートカット メニューの展開

表ビューのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

View (英語) オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、表ビューでショートカット メニューを表示しているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuTableView">
        <button id="MyContextMenuTableView"
            label="ContextMenuTableView"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 15. 表ビューのショートカット メニューの展開

テーブル ビューでのショートカット メニューの展開

予定表ビューのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

View オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、予定表ビューでショートカット メニューを表示しているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuCalendarView">
        <button id="MyContextMenuCalendarView" 
            label="ContextMenuCalendarView" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 16. 予定表ビューのショートカット メニューの展開

カレンダー ビューのショートカット メニューの展開

カード ビューのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

View オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、カード ビューでショートカット メニューを表示しているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuCardView">
        <button id="MyContextMenuCardView" 
            label="ContextMenuCardView" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 17. カード ビューのショートカット メニューの展開

カード ビューでのショートカット メニューの展開

時間帯ビューのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

View オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、時間帯ビューでショートカット メニューを表示しているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuTimelineView">
        <button id="MyContextMenuTimelineView" 
            label="ContextMenuTimelineView" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 18. 時間帯ビューのショートカット メニューの展開

タイムライン ビューでのショートカット メニューの展開

[並べ替え] コマンドのメニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、表ビューでフィールドのショートカット メニュー内の [並べ替え] をポイントしたときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuTableArrangeBy">
        <button id="MyContextMenuTableArrangeBy" 
            label="ContextMenuTableArrangeBy" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 19. 表ビューの [並べ替え] メニューの展開

テーブル ビューの [並べ替え] メニューの拡張

時刻バーのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、予定表ビューで時刻バーを右クリックしたときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuCalendarViewTimeBar">
        <button id="MyContextMenuCalendarViewTimeBar" 
            label="ContextMenuCalendarViewTimeBar" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 20. 予定表ビューでの時刻バーのショートカット メニューの展開

時刻バーのショートカット メニューの展開

空き時間情報バーのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、予定表ビューで空き時間情報バーを右クリックしたときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuCalendarViewFreeBusyBar">
        <button id="MyContextMenuCalendarViewFreeBusyBar" 
            label="ContextMenuCalendarViewFreeBusyBar" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 21. 予定表ビューでの空き時間情報バーのショートカット メニューの展開

空き時間情報バーのショートカット メニューの展開

表ビュー列のショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、予定表ビューで列ヘッダーを右クリックしたときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuTableViewColumn">
        <button id="MyContextMenuTableViewColumn" 
            label="ContextMenuTableViewColumn" 
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 22. 表ビューでの列のショートカット メニューの展開

テーブル ビュー列のショートカット メニューの展開

分類のショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、分類を右クリックしたときか、分類が指定されていない場合は表ビューで [分類] 列内を右クリックしたときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuCategories">
        <button id="MyContextMenuCategories"
            label="ContextMenuCategories"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 23. 分類のショートカット メニューの展開

カテゴリのショートカット メニューの展開

クイック フラグのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、クイック フラグのショートカット メニューを表示しているときです。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuQuickFlags">
        <button id="MyContextMenuQuickFlags"
            label="ContextMenuQuickFlags"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 24. クイック フラグのショートカット メニューの展開

クイック フラグのショートカット メニューの展開

フラグ付きメール アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

ユーザーが To Do バーでフラグの付いたメール アイテムのショートカット メニューを表示すると、Outlook 2010 では次のショートカット メニューが表示されます。

XML マークアップの例

<contextMenus>    
    <contextMenu idMso="ContextMenuFlaggedMailItem">
        <button id="MyContextMenuFlaggedMailItem"
            label="ContextMenuFlaggedMailItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>
</contextMenus>

ユーザー インターフェイスの例

図 25. フラグ付きメール アイテムのショートカット メニューの展開

フラグ付きメール アイテムのショートカット メニューの展開

フラグ付き連絡先アイテムのショートカット メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

ユーザーが To Do バーでフラグの付いたメール アイテムのショートカット メニューを表示すると、Outlook 2010 では次のショートカット メニューが表示されます。

XML マークアップの例

<contextMenus>    
    <contextMenu idMso="ContextMenuFlaggedContactItem">
        <button id="MyContextMenuFlaggedContactItem"
            label="ContextMenuFlaggedContactItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>
</contextMenus>

ユーザー インターフェイスの例

図 26. フラグ付き連絡先アイテムのショートカット メニューの展開

フラグ付き連絡先アイテムのショートカット メニューの展開

メール モジュールの [新しいアイテム] メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、メール モジュールのエクスプローラー リボンで [ホーム] タブの [新しいアイテム] を選択したときです。[新しいアイテム] メニューはショートカット メニューではありませんが、ユーザー設定メニュー項目用のマークアップは <contextMenus></contextMenus> タグ内に配置する必要があります。この方法を使用して、カスタム メッセージ クラスに基づくアイテム用のコマンドを組み込みの [新しいアイテム] メニューに追加することができます。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="MenuMailNewItem">
        <button id="MyMenuMailNewItem"
            label="MenuNewMailItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 27. メール モジュールの [新しいアイテム] メニューの展開

メール モジュールの [新しいアイテム] メニューの展開

予定表モジュールの [新しいアイテム] メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、予定表モジュールのエクスプローラー リボンで [ホーム] タブの [新しいアイテム] をクリックしたときです。[新しいアイテム] メニューはショートカット メニューではありませんが、ユーザー設定メニュー項目用のマークアップは <contextMenus></contextMenus> タグ内に配置する必要があります。この方法を使用して、カスタム メッセージ クラスに基づくアイテム用のコマンドを組み込みの [新しいアイテム] メニューに追加することができます。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="MenuCalendarNewItem">
        <button id="MyMenuCalendarNewItem"
            label="MenuCalendarNewItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 28. 予定表モジュールの [新しいアイテム] メニューの展開

カレンダー モジュールの [新しいアイテム] メニューの展開

連絡先モジュールの [新しいアイテム] メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、連絡先モジュールのエクスプローラー リボンで [ホーム] タブの [新しいアイテム] をクリックしたときです。[新しいアイテム] メニューはショートカット メニューではありませんが、ユーザー設定メニュー項目用のマークアップは <contextMenus></contextMenus> タグ内に配置する必要があります。この方法を使用して、カスタム メッセージ クラスに基づくアイテム用のコマンドを組み込みの [新しいアイテム] メニューに追加することができます。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="MenuContactsNewItem">
        <button id="MyMenuContactsNewItem"
            label="MenuContactsNewItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 29. 連絡先モジュールの [新しいアイテム] メニューの展開

コントラクト モジュールの [新しいアイテム] メニューの展開

タスク モジュールの [新しいアイテム] メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、タスク モジュールのエクスプローラー リボンで [ホーム] タブの [新しいアイテム] をクリックしたときです。[新しいアイテム] メニューはショートカット メニューではありませんが、ユーザー設定メニュー項目用のマークアップは <contextMenus></contextMenus> タグ内に配置する必要があります。この方法を使用して、カスタム メッセージ クラスに基づくアイテム用のコマンドを組み込みの [新しいアイテム] メニューに追加することができます。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="MenuTasksNewItem">
        <button id="MyMenuTasksNewItem"
            label="MenuTasksNewItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 30. タスク モジュールの [新しいアイテム] メニューの展開

タスク モジュールの [新しいアイテム] メニューの展開

履歴モジュールの [新しいアイテム] メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、履歴モジュールのエクスプローラー リボンで [ホーム] タブの [新しいアイテム] をクリックしたときです。[新しいアイテム] メニューはショートカット メニューではありませんが、ユーザー設定メニュー項目用のマークアップは <contextMenus></contextMenus> タグ内に配置する必要があります。この方法を使用して、カスタム メッセージ クラスに基づくアイテム用のコマンドを組み込みの [新しいアイテム] メニューに追加することができます。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="MenuJournalNewItem">
        <button id="MyMenuJournalNewItem"
            label="MenuJournalNewItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 31. 履歴モジュールの [新しいアイテム] メニューの展開

[履歴] モジュールの [新しいアイテム] メニューの展開

メモ モジュールの [新しいアイテム] メニュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクト

備考

Outlook 2010 で以下のショートカット メニューが表示されるのは、メモ モジュールのエクスプローラー リボンで [ホーム] タブの [新しいアイテム] をクリックしたときです。[新しいアイテム] メニューはショートカット メニューではありませんが、ユーザー設定メニュー項目用のマークアップは <contextMenus></contextMenus> タグ内に配置する必要があります。この方法を使用して、カスタム メッセージ クラスに基づくアイテム用のコマンドを組み込みの [新しいアイテム] メニューに追加することができます。

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="MenuNotesNewItem">
        <button id="MyMenuNotesNewItem"
            label="MenuNotesNewItem"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 32. メモ モジュールの [新しいアイテム] メニューの展開

[メモ] モジュールの [新しいアイテム] メニューの展開

差出人または受信者の個人用ショートカット メニュー

リボン ID

Microsoft.Mso.IMLayerUI

IRibbonControl.Context

Office.IMsoContactCard オブジェクト

備考

Outlook 2010 で個人用ショートカット メニューが表示されるのは、Outlook アイテムの差出人または受信者を右クリックしたときです。差出人または受信者の ID を確認するために、Office オブジェクト モデルの IMsoContactCard オブジェクトの Address プロパティを使用して Outlook オブジェクト モデルの AddressEntry (英語) オブジェクトが取得されます。以下のコード サンプルでは、このオブジェクトは受信者を表します。

if (control.Context is Microsoft.Office.Core.IMsoContactCard)
{
    msg = "Context=IMsoContactCard" + "\n";
    Office.IMsoContactCard card = control.Context as Office.IMsoContactCard;
    Outlook.AddressEntry addr =
        Globals.ThisAddIn.Application.Session.GetAddressEntryFromID(
        card.Address);
    if (addr != null)
    {
        msg = msg + addr.Name;
    }
    MessageBox.Show(msg);
}

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuContactCardRecipient">
        <button id="MyContextMenuContactCardRecipient"
            label="ContextMenuContactCardRecipient"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 33. 受信者の個人用ショートカット メニューの展開

個人用のショートカット メニューの展開

その他の連絡手段用のメニュー

リボン ID

Microsoft.Mso.IMLayerUI

IRibbonControl.Context

Office.IMsoContactCard オブジェクト

備考

電子メール、インスタント メッセージ、または電話以外の手段で連絡先とやり取りするために、連絡先カードのショートカット メニューに代替フォームを指定できます。連絡先カードを表示するには、Outlook アイテムの差出人または受信者をポイント、クリック、または右クリックします。

差出人または受信者の ID を確認するために、Office オブジェクト モデルの IMsoContactCard オブジェクトの Address プロパティを使用して Outlook オブジェクト モデルの AddressEntry オブジェクトが取得されます。以下のコード サンプルでは、このオブジェクトは受信者を表します。

if (control.Context is Microsoft.Office.Core.IMsoContactCard)
{
    msg = "Context=IMsoContactCard" + "\n";
    Office.IMsoContactCard card = control.Context as Office.IMsoContactCard;
    Outlook.AddressEntry addr =
        Globals.ThisAddIn.Application.Session.GetAddressEntryFromID
        (card.Address);
    if (addr != null)
    {
        msg = msg + addr.Name;
    }
    MessageBox.Show(msg);
}

XML マークアップの例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuContactCardOverflowDropdown">
        <button id="MyContextMenuContactCardOverflow"
            label="ContextMenuContactCardOverflow"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

ユーザー インターフェイスの例

図 34. 連絡先用のその他の連絡手段メニューの展開

連絡先の他のユーザー操作メニューの展開

操作別タブ

リボン ID

Microsoft.Outlook.Explorer または適切なインスペクターの RibbonID

IRibbonControl.Context

Explorer オブジェクトまたは Inspector オブジェクト

備考

操作別タブは、Outlook ユーザー インターフェイスで編集または変更を意図してオブジェクトを選択すると表示されます。操作別タブのカスタマイズは組み込みのリボン タブのカスタマイズと似ていますが、カスタマイズ用のマークアップには <contextualTabs></contextualTabs> タグを使用し、<tabs></tabs> タグは使用しません。操作別タブは、Outlook 2010 で広い範囲で使用されます。以下の例は、"添付ファイル ツール" という名前の添付ファイル向けに操作別タブをカスタマイズする方法を示しています。前の「添付ファイルのショートカット メニュー」では、選択されている添付ファイルに適用できるショートカット メニューの追加方法について説明しました。これと同等のコマンドを添付ファイル ツールの操作別タブに作成するには、以下の XML マークアップ サンプルのような XML を提供してから、IRibbonControl.Context から返される AttachmentSelection オブジェクトを以下の C# コードのような方法で使用して選択中の添付ファイルを確認します。

    else if (control.Context is Outlook.Explorer)
    {
        msg = "Context=Explorer" + "\n";
        Outlook.Explorer explorer = 
            control.Context as Outlook.Explorer;
            if (explorer.AttachmentSelection.Count >= 1)
            {
                Outlook.AttachmentSelection attachSel =
                    explorer.AttachmentSelection;
                foreach (Outlook.Attachment attach in attachSel)
                {
                    msg = msg + attach.DisplayName + "\n";
                }
            }
            else
            {
                Outlook.Selection selection =
                    explorer.Selection;
                if (selection.Count == 1)
                {
                    OutlookItem olItem =
                        new OutlookItem(selection[1]);
                    msg = msg + olItem.Subject
                        + "\n" + olItem.LastModificationTime;
                }
                else
                {
                    msg = msg + "Multiple Selection Count="
                        + selection.Count;
                }
            }
        }
    }    

XML マークアップの例

<contextualTabs>
    <tabSet idMso="TabSetAttachments">
        <tab idMso="TabAttachments">
            <group label="MyGroup" id="MyAttachmentGroup">
                <button id="MyButtonAttachments"
                    size="large"
                    label="MyButtonAttachments"
                    imageMso="HappyFace"
                    onAction="OnMyButtonClick" />
            </group>
        </tab>
    </tabSet>
</contextualTabs>

ユーザー インターフェイスの例

図 35. [添付ファイル ツール] 操作別タブが追加された Outlook エクスプローラーの [添付ファイル] タブの展開

[添付] タブの展開

Backstage ビュー

リボン ID

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer オブジェクトまたは Inspector オブジェクト

備考

Backstage ビューは、よく使用する機能を見つけたり、ドキュメントを操作する新しい方法を発見したりするのに役立ちます。Backstage ビューにアクセスするには、[ホーム] タブの左側に表示される [ファイル] タブをクリックします。Outlook 2010 では、Backstage ビューを使用してアプリケーションレベルのアドイン設定を確認できます。ここでは Backstage ビューをカスタマイズして、Outlook の以前のバージョンで [ツール] をクリックしてから [オプション] をクリックしてアクセスしたプロパティ ページ拡張に置き換えることを検討してみます。プロパティ ページ拡張は、Outlook 2010 でも引き続き機能しますが、どこにあるのか簡単に見つからない可能性があります。アドインのプロパティ ページ拡張にアクセスするには、Backstage ビューを開き、[オプション] コマンドをクリックして [Outlook のオプション] ダイアログ ボックスを表示します。次に、[アドイン] タブをクリックし、[アドイン オプション] ボタンをクリックします。

Outlook 2010 では、Backstage ビューをエクスプローラー ウィンドウまたはインスペクター ウィンドウに表示できます。IRibbonControl.Context プロパティを使用すると、Backstage ビューがエクスプローラーまたはインスペクターのどちらのウィンドウでホストされているのかを確認できます。

Backstage ビューではタブが機能の単位です。Backstage ビューには、既定のタブがあります。たとえば、Outlook エクスプローラーの Backstage ビューには、[情報]、[開く]、[印刷]、および [ヘルプ] の各タブがあります。ユーザー設定タブを作成し、それを Outlook エクスプローラー ウィンドウのみ、またはインスペクター ウィンドウのみに表示する場合は、GetVisible コールバックを使用します。以下の C# コード サンプルは、[MyPlace] タブをエクスプローラー ウィンドウにのみ表示します。

public bool MyPlace_GetVisible(IRibbonControl control)
{
    if (control.Context is Microsoft.Office.Interop.Outlook.Explorer)
        return true;
    else
        return false;
}

XML マークアップの例

<backStage>
    <tab id="MyBackStageTab"
        label="MyTab"
        getVisible="MyBackStageTab_GetVisible">
        <firstColumn>
            <group id="regularGroup"
                label="My Regular Group"
                helperText="My Regular Group Helper Text">
                <primaryItem>
                    <button id="MyHeroButton"
                        label="My Hero Button"
                        imageMso="MagicEightBall"
                        isDefinitive="false"
                        onAction="OnMyButtonClick"
                        screentip="Click to spin the magic eight ball."/>
                </primaryItem>
                <bottomItems>
                    <hyperlink
                        id="hyperlink"
                        label="Office Developer Center"
                        target="http://msdn.microsoft.com/en-  
                            us/office/default.aspx"/>
                    <imageControl id="userImage"
                        getImage="GetCurrentUserImage"/>
                    <layoutContainer id="vertical"
                        align="left"
                        layoutChildren="vertical">
                        <labelControl id="labelControl2" 
                            label="Vertical layout"/>
                        <radioGroup id="myradiogroup1" label="Options">
                            <radioButton id="rb1" label="Option 1"/>
                            <radioButton id="rb2" label="Option 2"/>
                            <radioButton id="rb3" label="Option 3"/>
                        </radioGroup>
                    </layoutContainer>
                    <groupBox id="mygroupbox1" label="Check Boxes">
                        <checkBox id="check1" label="Check Box 1"/>
                        <checkBox id="check2" label="Check Box 2"/>
                        <checkBox id="check3" label="Check Box 3"/>
                    </groupBox>
                    <layoutContainer id="vertical2"
                        align="left"
                        layoutChildren="vertical">
                        <comboBox id="comboBox" label="Color ComboBox">
                            <item id="cbi1" label="Blue"/>
                            <item id="cbi2" label="Magenta"/>
                            <item id="cbi3" label="Cyan"/>
                        </comboBox>
                    </layoutContainer>
                </bottomItems>
            </group>
            <taskGroup id="taskGroup"
                label="My Task Group"
                helperText="My Task Group Helper Text">
                <category id="MyCategory" label="My Category">
                <task id="MyTask"
                    tag="MyTask"
                    isDefinitive="true"
                    label="My Task"
                    imageMso="NewTask"/>
                </category>
            </taskGroup>
        </firstColumn>
        <secondColumn>
            <group id="myemptygroup">
            </group>
        </secondColumn>
    </tab>
</backstage>

ユーザー インターフェイスの例

図 36. Outlook エクスプローラーの Backstage ビューの展開

Outlook エクスプローラーの Backstage ビューの展開

まとめ

2007 Microsoft Office system の Fluent UI にはリボン、メニュー、強化されたヒント、ミニ ツール バー、キーボード ショートカットなどがあり、これらが各種 Office アプリケーションに表示されます。Office 2010 では、Fluent UI に Backstage ビューが追加されました。Fluent UI 機能拡張は、Fluent UI コンポーネントをプログラムによってカスタマイズする機能を提供します。たとえば、Outlook 2010 には、エクスプローラーやインスペクターのリボン、メニュー、ショートカット メニュー、および Backstage ビューを拡張する多数の手段があります。Fluent UI をプログラムによって拡張するこれらの手段は、基本的に非常に似ています。いずれの方法でも、IRibbonExtensibility.GetCustomUI を使用してユーザー設定 UI 用の XML マークアップを指定し、ユーザー設定 UI へのユーザー操作に応答するコールバックをアドイン内に作成します。拡張性の設計がこのように一貫しているので、Outlook 2010 アドインの開発者は UI の強化を簡単に行うことができます。

その他の技術情報

次のリソースには、Office 2010 の Fluent UI をプログラムによって強化する方法について詳細な情報が記載されています。

次のリソースには、リボンをカスタマイズする方法について詳細な情報が記載されています。対象アプリケーションは Outlook 2007 ですが、多くの原則は Office 2010 にも当てはまります。