共用方式為


擴充 Outlook 2010 中的使用者介面

**摘要:**了解如何以程式設計方式擴充 Microsoft Office Fluent 使用者介面 (UI),以自訂 Microsoft Outlook 2010 中的 UI。Microsoft Office 2010 中的 Fluent UI 包括 Office Fluent 功能區、功能表及 Microsoft Office Backstage 檢視。本文討論如何自訂 Outlook 2010 UI 中的 Explorer 和 Inspector 功能區、功能表和快顯功能表,以及 Backstage 檢視。本文會逐步解說程式碼範例,說明如何自訂功能區、快顯功能表和 Backstage 檢視,以及檢查套用於 Outlook 2010 UI 的特定問題。(47 張列印頁面)

**Applies to:**Office 2010 | Outlook 2010 | Visual Studio

In this article
概觀
增益集範例
功能區識別碼
Explorer
Inspector
資料夾快顯功能表
根搜尋資料夾快顯功能表
儲存區快顯功能表
郵件項目的快顯功能表
多個選取項目的快顯功能表
約會或會議邀請的快顯功能表
工作項目的快顯功能表
連絡人項目的快顯功能表
日誌項目的快顯功能表
附註項目的快顯功能表
捷徑快顯功能表
附件快顯功能表
資料表檢視快顯功能表
行事曆檢視快顯功能表
卡片檢視快顯功能表
時間表檢視快顯功能表
排列指令的功能表
時間列的快顯功能表
空閒/忙碌長條圖的快顯功能表
資料表檢視欄的快顯功能表
類別快顯功能表
快速標幟的快顯功能表
標幟郵件項目的快顯功能表
標幟連絡人項目的快顯功能表
郵件模組的新增項目功能表
行事曆模組的新增項目功能表
連絡人模組的新增項目功能表
工作模組的新增項目功能表
日誌模組的新增項目功能表
附註模組的新增項目功能表
寄件者或收件者的角色快顯功能表
交替互動的功能表
關聯式索引標籤
Backstage 檢視
結論
其他資源

適用於:  Microsoft Office 2010 | Microsoft Outlook 2010

發佈日期:  2009 年 11 月 | 更新日期:  2010 年 4 月

提供者:  Microsoft Corporation 的 Randy Byrne

按一下以取得程式碼  Outlook 2010 範例:擴充使用者介面 (可能為英文網頁)

內容

  • 概觀

  • 增益集範例

  • 功能區識別碼

  • Explorer

  • Inspector

  • 資料夾快顯功能表

  • 根搜尋資料夾快顯功能表

  • 儲存區快顯功能表

  • 郵件項目的快顯功能表

  • 多個選取項目的快顯功能表

  • 約會或會議邀請的快顯功能表

  • 工作項目的快顯功能表

  • 連絡人項目的快顯功能表

  • 日誌項目的快顯功能表

  • 附註項目的快顯功能表

  • 捷徑快顯功能表

  • 附件快顯功能表

  • 資料表檢視快顯功能表

  • 行事曆檢視快顯功能表

  • 卡片檢視快顯功能表

  • 時間表檢視快顯功能表

  • 排列指令的功能表

  • 時間列的快顯功能表

  • 空閒/忙碌長條圖的快顯功能表

  • 資料表檢視欄的快顯功能表

  • 類別快顯功能表

  • 快速標幟的快顯功能表

  • 標幟郵件項目的快顯功能表

  • 標幟連絡人項目的快顯功能表

  • 郵件模組的新增項目功能表

  • 行事曆模組的新增項目功能表

  • 連絡人模組的新增項目功能表

  • 工作模組的新增項目功能表

  • 日誌模組的新增項目功能表

  • 附註模組的新增項目功能表

  • 寄件者或收件者的角色快顯功能表

  • 交替互動的功能表

  • 關聯式索引標籤

  • Backstage 檢視

  • 結論

  • 其他資源

概觀

本文說明許多新方法,可讓您以程式設計方式在 Outlook 2010 UI 中自訂下列區域:

  • Explorer 功能區

  • Inspector 功能區

  • 快顯功能表

  • 新增項目功能表

  • 連絡人卡片快顯功能表

  • 關聯式索引標籤

  • Backstage 檢視

本文特別說明如何利用「Fluent UI 擴充性」來自訂上述各區域中的元件。一開始,您必須提供 XML 標記給 IRibbonExtensibility (可能為英文網頁) 介面的 GetCustomUI (可能為英文網頁) 方法。使用您要自訂之元件的功能區識別碼來決定要在 GetCustomUI 方法中當作傳回值來傳遞的 XML。您的 XML 通常會提供可用來回應按一下按鈕動作或控制功能區控制項可見性的回呼。

本文列出您程式碼的 Fluent UI 擴充性回呼中應該會有的 IRibbonControl.Context (可能為英文網頁) 屬性。此外,其中也包含每個 UI 元件的 XML 標記範例,以及用來示範 UI 元件的螢幕擷取畫面,以幫助您了解自訂作業是發生在 Outlook 2010 UI 中的什麼地方。

注意

在 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 檢視。此增益集是以 Visual Studio 2008 Tools for Office 開發,其加入功能區控制項、自訂功能表、快顯功能表項目及 Backstage 檢視控制項,當使用者按一下控制項或功能表項目時,就會顯示訊息方塊。此增益集針對 Outlook 2010 UI 中的每個進入點各提供一項視覺元素,可讓您利用 Fluent UI 擴充性來加以自訂。

此增益集範例有一些附加功能,說明如何管理 Outlook 2010 UI 中的特定問題區域。例如,假設您只要針對收到的電子郵件項目,在功能區中顯示自訂群組。唯有當 Outlook Explorer 中的選取項目是已接收的郵件項目,或是已接收的郵件項目顯示在 Inspector 中時,此增益集範例才會顯示自訂功能區索引標籤。雖然剛開始這似乎不是什麼重要的工作,但實際上是個複雜的問題,因為 Outlook 可以顯示多個 Explorer 或 Inspector 視窗,而且您的程式碼必須能夠適當地回應。例如,在兩個開啟的 Explorer 視窗中,您可能必須隱藏視窗中已選取會議的自訂索引標籤,但是要顯示視窗中已選取收到之郵件項目的自訂索引標籤。一旦您了解增益集範例的運作方式,就可以使用範例中的包裝函數類別來建立您自己的解決方案,在多個 Outlook 視窗中協調指令 UI 的顯示方式。

安裝指示

下載程式碼安裝套件範例

  1. 從 MSDN 範例庫中的 Outlook 2010:擴充使用者介面 (可能為英文網頁)下載 OL2010ExtendingtheUserInterface_CS.zip 檔案。

  2. 將 .zip 檔案解壓縮至您選擇的資料夾。在 Windows Vista 中,Visual Studio 2008 Tools for Office 專案的預設路徑為 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. 在 [Drive:]\Program Files\Microsoft Office\Office14 資料夾中,選取 [Outlook.exe]。

  5. 按 F5 鍵,以偵錯模式啟動增益集。

程式碼逐步解說

Outlook14RibbonXAddinCS 解決方案是以 Microsoft Visual Studio 2008 Service Pack 1 所建立。其使用手動撰寫 XML 標記檔案的方式,而不是 Visual Studio Tools for Office 隨附的功能區設計工具。最重要的架構功能是使用包裝函式類別 (Explorer 為 OutlookExplorer.cs,Inspector 為 OutlookInspector.cs) 來處理多個 Outlook 視窗。包裝函式類別是使用 C# Generic List(T) (可能為英文網頁) 類別來實作的。

注意

如果您不撰寫 Managed 程式碼,則必須撰寫模仿使用這些包裝函式類別的原生 C++ 程式碼。

首先,下列類別層級執行個體變數是以 Visual Studio 2008 附 Visual Studio Tools for Office 中的標準 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
        ...
    }
}

這些執行個體變數一經宣告,就會用在 ThisAddin 類別的 Startup 方法中,提供給所有 Visual Studio 2008 附 Visual Studio Tools for Office 增益集。在 Startup 方法中 (通常會在 Outlook 啟動時發生),程式碼會先連接事件處理常式,以回應 Outlook Explorer (可能為英文網頁) 集合物件上的 NewExplorer (可能為英文網頁) 事件。在處理 NewExplorer 事件之後,就會使用下列程式碼來加入使用中的 Explorer 視窗。

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 啟動之後,Office 就會立即呼叫 GetCustomUI。GetCustomUI 是 IRibbonExtensibility 介面載入自訂 XML 標記的方法。在 Outlook 2007 中,當指定 Inspector 類型 (例如連絡人或約會) 的第一個執行個體顯示時,Office 會呼叫 GetCustomUI。在 Outlook 2010 中,Office 會在 ThisAddin.Startup 方法之前呼叫 GetCustomUI,以容許載入 Outlook Explorer 功能區的功能區自訂。因為 Office 只會在啟動期間為第一個 Outlook Explorer 呼叫一次 GetCustomUI,並且為多種 Inspector 類型的第一個執行個體呼叫多次,所以請考慮使用 Switch 陳述式來控制為不同自訂功能區載入 XML 標記的方式。針對 Outlook 中的每個功能區,都會呼叫 GetCustomUI,而且 Office 會傳遞功能區識別碼字串,以識別在 Outlook 中載入的功能區。如需功能區識別碼的完整清單,請參閱<功能區識別碼>一節。

在範例程式碼中,有三個 XML 標記檔案:

  • ContactCard.xml

  • Explorer.xml

  • ReadMail.xml

ContactCard.xml 包含連絡人卡片上快顯功能表的 XML 標記。Explorer.xml 包含 Explorer 功能區、快顯功能表及 Backstage 檢視的 XML 標記。Readmail.xml 包含讀取郵件 Inspector 的 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 標記,就要在 Fluent UI 擴充性回呼中撰寫程式碼,依據 Explorer 中的選取項目是否為已接收的郵件項目,隱藏或顯示名為 [MyTab] 的索引標籤。若要完成此案例,您必須連接 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 事件處理常式非常直接。只要使用者變更 Explorer 視窗中的選取項目,就會發生 SelectionChange 事件。發生 SelectionChange 時,會呼叫 RaiseInvalidateControl 方法,而且控制識別碼 "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 中使用多個 Explorer 或 Inspector 視窗。將視窗包含在個別的類別執行個體中,以產生適合該特定視窗的事件。

  • 適當使用 IRibbonUI 介面的 InvalidateControl 或 Invalidate 方法,以促使回呼發生。

  • 評估事件處理常式及功能區回呼中的不同項目類型 (依據特定項目類型的訊息類別、內建屬性或自訂屬性)。

功能區識別碼

下表列出傳遞至 IRibbonExtensibility 介面之 GetCustomUI 方法的功能區識別碼。請使用功能區識別碼來判斷要在 GetCustomUI 方法中傳回的 XML。

表 1. 功能區識別碼及訊息類別

功能區識別碼

訊息類別

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 or 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.* and IPM.TaskRequest.*

Microsoft.Outlook.Explorer

不適用。請使用此功能區識別碼來傳回 Explorer 功能區、快顯功能表及 Backstage 檢視的 XML 標記。

Explorer

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer (可能為英文網頁) 物件

註解

當 Outlook 2010 啟動時,會呼叫 IRibbonExtensibility 介面的 GetCustomUI 方法,並且在增益集的 RibbonID 參數中指定功能區識別碼。增益集應實作 GetCustomUI 方法,這樣一來,如果 RibbonID 是 Microsoft.Outlook.Explorer,GetCustomUI 就會傳回 Explorer 及快顯功能表自訂的 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. 擴充 Explorer 功能區

延伸瀏覽器功能區

Inspector

功能區識別碼

Outlook 支援 Inspector 中顯示不同項目類型的不同功能區。依據要顯示在 Inspector 中之項目的訊息類別,增益集應預期 Outlook 會將相對應的功能區識別碼當作 RibbonID 參數傳遞至 GetCustomUI 方法。

表 2. 功能區識別碼及訊息類別

功能區識別碼

訊息類別

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 or 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.* and IPM.TaskRequest.*

IRibbonControl.Context

Inspector (可能為英文網頁) 物件

註解

當 Outlook 2010 顯示內建訊息類別的第一個 Inspector 時,Outlook 會呼叫 IRibbonExtensibility 介面的 GetCustomUI 方法,並且在增益集的 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. 擴充 Inspector 功能區

延伸檢查功能區

資料夾快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Folder (可能為英文網頁) 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,功能窗格的 [資料夾清單] 中會選取一個資料夾。

XML 標記範例

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

使用者介面範例

圖 3. 為資料夾清單中的資料夾擴充快顯功能表

延伸資料夾的快顯功能表

根搜尋資料夾快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Folder 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,功能窗格的 [資料夾清單] 中會選取根搜尋資料夾 [搜尋資料夾]。

XML 標記範例

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

使用者介面範例

圖 4. 擴充根搜尋資料夾的快顯功能表

延伸根搜尋資料夾的快顯功能表

儲存區快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Store (可能為英文網頁) 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,功能窗格的 [資料夾清單] 中會選取一個儲存區資料夾。

XML 標記範例

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

使用者介面範例

圖 5. 擴充儲存區資料夾的快顯功能表

延伸郵件檔資料夾的快顯功能表

郵件項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection (可能為英文網頁) 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前檢視中會選取一個郵件項目。

XML 標記範例

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

使用者介面範例

圖 6. 擴充郵件項目的快顯功能表

延伸郵件項目的快顯功能表

多個選取項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前檢視中會選取多個項目。

XML 標記範例

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

使用者介面範例

圖 7. 擴充多個選取項目的快顯功能表

延伸多個選取項目的快顯功能表

約會或會議邀請的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前行事曆檢視中會選取一個約會或會議要求。

XML 標記範例

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

使用者介面範例

圖 8. 為會議召集人行事曆中的會議要求擴充快顯功能表

延伸會議邀請的快顯功能表

工作項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前工作檢視中會選取一個工作項目。

XML 標記範例

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

使用者介面範例

圖 9. 擴充工作項目的快顯功能表

延伸工作項目的內容功能表

連絡人項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前檢視中會選取一個連絡人項目。

XML 標記範例

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

使用者介面範例

圖 10. 擴充連絡人項目的快顯功能表

延伸連絡人項目的快顯功能表

日誌項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前檢視中會選取一個日誌項目。

XML 標記範例

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

使用者介面範例

圖 11. 擴充日誌項目的快顯功能表

延伸日誌項目的快顯功能表

附註項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Selection 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,目前檢視中會選取一個附註項目。

XML 標記範例

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

使用者介面範例

圖 12. 擴充附註項目的快顯功能表

擴充記事項目的快顯功能表

捷徑快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

OutlookBarShortcut (可能為英文網頁) 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,[捷徑] 模組中會選取一個捷徑。

XML 標記範例

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

使用者介面範例

圖 13. 為捷徑模組中的捷徑擴充快顯功能表

擴充捷徑的快顯功能表

附件快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

AttachmentSelection (可能為英文網頁) 物件

註解

當 Outlook 2010 顯示下列快顯功能表時,Explorer 或 Inspector 的 [讀取窗格] 中會選取一或多個附件。

XML 標記範例

  
<contextMenus>    
    <contextMenu idMso="ContextMenuAttachments">
        <button id="MyContextMenuAttachments"
            label="ContextMenuAttachments"
            onAction="OnMyButtonClick"/>
    </contextMenu>  
</contextMenus>

使用者介面範例

圖 14. 為讀取窗格中的附件擴充快顯功能表

延伸附件的快顯功能表

資料表檢視快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

View (可能為英文網頁) 物件

註解

當使用者在資料表檢視中顯示快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 15. 擴充資料表檢視中的快顯功能表

延伸表格檢視的快顯功能表

行事曆檢視快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

View 物件

註解

當使用者在行事曆檢視中顯示快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 16. 擴充行事曆檢視中的快顯功能表

延伸行事曆檢視的快顯功能表

卡片檢視快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

View 物件

註解

當使用者在卡片檢視中顯示快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 17. 擴充卡片檢視中的快顯功能表

延伸卡片檢視的快顯功能表

時間表檢視快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

View 物件

註解

當使用者在時間表檢視中顯示快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 18. 擴充時間表檢視中的快顯功能表

擴充時刻表檢視的快顯功能表

排列指令的功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對資料表檢視中的欄位,指向快顯功能表中的 [排列] 時,Outlook 2010 會顯示下列功能表。

XML 標記範例

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

使用者介面範例

圖 19. 擴充資料表檢視中的排列功能表

延伸表格檢視的 [排列方式] 功能表

時間列的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者在行事曆檢視中以滑鼠右鍵按一下時間列時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 20. 為行事曆檢視中的時間列擴充快顯功能表

延伸時間列的快顯功能表

空閒/忙碌長條圖的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者在行事曆檢視中以滑鼠右鍵按一下空閒/忙碌長條圖時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 21. 為行事曆檢視中的空閒/忙碌長條圖擴充快顯功能表

延伸空閒/忙碌列的快顯功能表

資料表檢視欄的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者在資料表檢視中以滑鼠右鍵按一下欄標題時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 22. 為資料表檢視中欄擴充快顯功能表

延伸表格檢視欄的快顯功能表

類別快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者以滑鼠右鍵按一下類別時,或是如果尚未指定類別,而使用者在資料表檢視中的 [類別] 欄底下按一下滑鼠右鍵,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 23. 擴充類別的快顯功能表

擴充類別的快顯功能表

快速標幟的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者顯示快速標幟的快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 24. 擴充快速標幟的快顯功能表

延伸快速標幟的快顯功能表

標幟郵件項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者在 [待辦事項] 列中顯示標幟郵件項目的快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 25. 擴充標幟郵件項目的快顯功能表

延伸已標幟郵件項目的快顯功能表

標幟連絡人項目的快顯功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者在 [待辦事項] 列中顯示標幟郵件項目的快顯功能表時,Outlook 2010 會顯示下列快顯功能表。

XML 標記範例

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

使用者介面範例

圖 26. 擴充標幟連絡人項目的快顯功能表

延伸已標幟連絡人項目的快顯功能表

郵件模組的新增項目功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對 [郵件] 模組,在 Explorer 功能區的 [首頁] 索引標籤中選取 [新增項目] 時,Outlook 2010 會顯示下列功能表。雖然 [新增項目] 功能表不是快顯功能表,但是自訂功能表項目的標記應放在 <contextMenus></contextMenus> 標籤中。這樣您就可以針對以自訂訊息類別為基礎的項目,將指令加入內建的 [新增項目] 功能表。

XML 標記範例

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

使用者介面範例

圖 27. 擴充郵件模組的新增項目功能表

延伸郵件模組的 [新項目] 功能表

行事曆模組的新增項目功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對行事曆模組,在 Explorer 功能區的 [首頁] 索引標籤中按一下 [新增項目] 時,Outlook 2010 會顯示下列功能表。雖然 [新增項目] 功能表不是快顯功能表,但是自訂功能表項目的標記應放在 <contextMenus></contextMenus> 標籤中。這樣您就可以針對以自訂訊息類別為基礎的項目,將指令加入內建的 [新增項目] 功能表。

XML 標記範例

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

使用者介面範例

圖 28. 擴充行事曆模組的新增項目功能表

擴充行事曆模組的 [新項目] 功能表

連絡人模組的新增項目功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對連絡人模組,在 Explorer 功能區的 [首頁] 索引標籤中按一下 [新增項目] 時,Outlook 2010 會顯示下列功能表。雖然 [新增項目] 功能表不是快顯功能表,但是自訂功能表項目的標記應放在 <contextMenus></contextMenus> 標籤中。這樣您就可以針對以自訂訊息類別為基礎的項目,將指令加入內建的 [新增項目] 功能表。

XML 標記範例

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

使用者介面範例

圖 29. 擴充連絡人模組的新增項目功能表

擴充連絡人模組的 [新項目] 功能表

工作模組的新增項目功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對工作模組,在 Explorer 功能區的 [首頁] 索引標籤中按一下 [新增項目] 時,Outlook 2010 會顯示下列功能表。雖然 [新增項目] 功能表不是快顯功能表,但是自訂功能表項目的標記應放在 <contextMenus></contextMenus> 標籤中。這樣您就可以針對以自訂訊息類別為基礎的項目,將指令加入內建的 [新增項目] 功能表。

XML 標記範例

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

使用者介面範例

圖 30. 擴充工作模組的新增項目功能表

擴充工作模組的 [新項目] 功能表

日誌模組的新增項目功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對日誌模組,在 Explorer 功能區的 [首頁] 索引標籤中按一下 [新增項目] 時,Outlook 2010 會顯示下列功能表。雖然 [新增項目] 功能表不是快顯功能表,但是自訂功能表項目的標記應放在 <contextMenus></contextMenus> 標籤中。這樣您就可以針對以自訂訊息類別為基礎的項目,將指令加入內建的 [新增項目] 功能表。

XML 標記範例

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

使用者介面範例

圖 31. 擴充日誌模組的新增項目功能表

擴充日誌模組的 [新項目] 功能表

附註模組的新增項目功能表

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件

註解

當使用者針對附註模組,在 Explorer 功能區的 [首頁] 索引標籤中按一下 [新增項目] 時,Outlook 2010 會顯示下列功能表。雖然 [新增項目] 功能表不是快顯功能表,但是自訂功能表項目的標記應放在 <contextMenus></contextMenus> 標籤中。這樣您就可以針對以自訂訊息類別為基礎的項目,將指令加入內建的 [新增項目] 功能表。

XML 標記範例

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

使用者介面範例

圖 32. 擴充附註模組的新增項目功能表

擴充記事模組的 [新項目] 功能表

寄件者或收件者的角色快顯功能表

功能區識別碼

Microsoft.Mso.IMLayerUI

IRibbonControl.Context

Office.IMsoContactCard 物件

註解

當使用者以滑鼠右鍵按一下 Outlook 項目的寄件者或收件者時,Outlook 2010 會顯示角色快顯功能表。若要識別寄件者或收件者的身分,請使用 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. 擴充收件者的角色快顯功能表

擴充人員快顯功能表

交替互動的功能表

功能區識別碼

Microsoft.Mso.IMLayerUI

IRibbonControl.Context

Office.IMsoContactCard 物件

註解

若要使用電子郵件、立即訊息或電話以外的方式與連絡人互動,使用者可以在 [連絡人卡片] 的捷徑功能表上指定替代表單。若要顯示 [連絡人卡片],使用者可以將指標停留在上面,再按一下,或是以滑鼠右鍵按一下 Outlook 項目的寄件者或收件者。

若要識別寄件者或收件者的身分,請使用 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. 擴充連絡人的其他互動功能表

延伸連絡人的其他互動功能表

關聯式索引標籤

功能區識別碼

Microsoft.Outlook.Explorer 或適當的 Inspector 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 Explorer 的 [附件工具] 關聯式索引標籤擴充 [附件] 索引標籤

延伸 [附件] 索引標籤

Backstage 檢視

功能區識別碼

Microsoft.Outlook.Explorer

IRibbonControl.Context

Explorer 物件或 Inspector 物件

註解

Backstage 檢視可協助使用者尋找常用的功能,以及探索處理文件的新方法。若要存取 Backstage 檢視,請按一下出現在 [首頁] 索引標籤左邊的 [檔案] 索引標籤。在 Outlook 2010 中,您可以使用 Backstage 檢視來顯示增益集的應用程式層級設定。請考慮自訂 Backstage 檢視,以取代在舊版 Outlook 中依序按一下 [工具] 和 [選項] 時,可存取的屬性頁擴充。屬性頁擴充可繼續在 Outlook 2010 中運作,但是使用者可能不容易找到。若要存取增益集屬性頁擴充,請開啟 Backstage 檢視,按一下 [選項] 指令,以顯示 [Outlook 選項] 對話方塊,按一下 [增益集] 索引標籤,然後按一下 [增益集選項] 按鈕。

Outlook 2010 會在 Explorer 或 Inspector 視窗中顯示 Backstage 檢視。請使用 IRibbonControl.Context 屬性來判斷 Backstage 檢視是否裝載在 Explorer 或 Inspector 視窗中。

Backstage 檢視中的索引標籤是功能性單元。Backstage 檢視包含預設索引標籤。例如,Outlook Explorer 的 Backstage 檢視包含 [資訊]、[開啟]、[列印] 及 [說明] 索引標籤。如果您想要建立自訂索引標籤,並只顯示在 Outlook Explorer 或 Inspector 視窗中,請使用 GetVisible 回呼。下列 C# 程式碼範例會讓 MyPlace 索引標籤只顯示在 Explorer 視窗中。

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="https://msdn.microsoft.com/zh-tw/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 Explorer 的 Backstage 檢視

延伸 Outlook 總管的 Backstage 檢視

結論

在 2007 Microsoft Office System 中,Fluent UI 包括功能區、功能表、增強型工具提示、迷你工具列,以及出現在各種 Office 應用程式中的鍵盤快速鍵。Office 2010 將 Backstage 檢視加入 Fluent UI。Fluent UI 擴充性支援以程式設計方式自訂 Fluent UI 元件。例如,Outlook 2010 提供許多方法,可擴充 Explorer 或 Inspector 中的功能區、功能表、快顯功能表及 Backstage 檢視。以程式設計方式擴充 Fluent UI 的背後原理都很相似;全都會使用 IRibbonExtensibility.GetCustomUI 來指定自訂 UI 的 XML 標記,以及在增益集中撰寫回呼,以回應使用者在自訂 UI 上的動作。一致的擴充性設計讓 Outlook 2010 增益集開發人員更容易進一步加強其 UI。

其他資源

下列資源提供在 Office 2010 中以程式設計方式加強 Fluent UI 的相關資訊:

下列資源提供有關如何自訂功能區的詳細資訊。雖然其目標是 Outlook 2007,但許多原理仍適用於 Office 2010。