2014年10月25日

Office Outlook Customization 開發筆記(2)

我是從 Windows 7 32bit Outlook 2010 .Net Framework 4.5 開始開發,使用 Visual Studio 2013。

接下來要選擇使用 VBA 或 VSTO ,兩個比較可以參考這裡,因為我會用到 .Net Framework 的一些程式庫,所以決定用 VSTO  來開發,語言使用 C#。

然後最好先去下載 Outlook 2010 範例來閱讀和修改,沒看過範例很難起手。

開發上要注意的是,Application, Explorer, Inspector 等的 instance 是可以有多個並存的,因為使用者可以開多個 Outlook、多個郵件視窗,所以各個 instance 要蒐集起來處理,可以自製類別和類別容器來把這些 instance 包起來。

特別要講的是 UI  的開發,我選 Custom Ribbon UI 來開發,比較簡單的方法是先用 Ribbon UI Designer 拉出大概想要的介面,再匯出成 XML 的格式來修改,兩種設計方式無法並存,最後決定用 Ribbon XML ,因為屬性要修改比較方便,缺點是要查 msdn 才知道屬性名稱。

載入客製化 UI 的方法是定義 GetCustomUI(string ribbonID) ,依照目前的情境(Explorer, Mail.Read, Mail.Compose, ....)來決定目前要載入哪個搭配的 Custom UI 的 XML 或 Designer UI 檔案。

互動原理是在 Ribbon XML 中指定 Callback 函式名稱,然後在程式中定義 Callback 函式的處理方式,參考這裡

預設的 Ribbon UI template 會有完整的 customUI > ribbon > tabs > tab> group 的結構,可以讓一個外掛擁有很大的空間,也會自動做 responsive layout ,但是如果我們只是想要改造某個內建的功能,我們可以指定 ControlId / OfficeId 或是 XML 的 idMso 來指定修改某個內建的部份(參考這裡),至於內建 ID 的列表可以從這裡下載。

Ribbon UI 的優點是他是自適應的,在 Ribbon UI XML 中,如果要幫按鈕加上自定的 icon ,可以使用 getImage 方法,然後在 C# 檔案中回傳 BitMap ,路徑範例 MyAddin1.Properties.Resources.myIcon ,不加附檔名。圖片檔可以從 Project 的 Properties 加入。



Office Outlook Customization 開發筆記(3) Signing & Publishing