Outlook Add-in(COM加載項)
技術指南
摘要:本章節詳細介紹了Outlook Add-in插件的開發過程。
在VB中,首先需要引用“Microsoft Add-in Designer”類型庫,該庫包含了一些COM加載項必需的界面。
其次,Visual Basic中需要“Implements IDTExtensibility
更多信息
一個Office2000下的內部COM插件必須實現一個_IDTExtensibility2派發接口。
_IDTExtensibility2派發接口被定義在MSADDin Designer類型庫(MSADDNDR.dll/MSADDNDR.tlb)中,它通常位于<盤符>/Program Files/Common Files/Designer下。
_IDTExtensibility2接口中必須實現下面五個接口事件函數(一般只需編寫OnConnection和OnDisconnection中代碼)。
IDTExtensibility2提供了5個將用于COM加載項的事件:
Ø OnConnection 裝載插件到內存時處理(可以通過自動化在程序啟動時自動裝載插件)。
Ø OnDisconnection 從內存中缷載插件時處理。
Ø OnStartupComplete 當應用程序啟動時插件剛裝載完成時處理。
Ø OnBeginShutdown 當應用程序關閉時插件剛缷載完成時處理。
Ø OnAddInsUpdate COM插件改變時處理。
下面我們一一介紹這些事件:
當第一次加載或者連接加載項時,例如Outlook啟動時,或者當用戶選擇加載COM加載項時,將調用OnConnection事件。
OnConnection事件是獲取或存儲稍候將要在代碼中使用的Outlook的Application隊形最好的地方。
當發生OnConnection事件,將傳遞以下四個參數:
Application參數:是Outlook的Application的引用。
ConnectMode參數:COM加載項的加載方式??梢允且韵鲁A恐械囊环N:ext_cm_AfterStartup,ext_cm_CommandLine,ext_cm_External或者ext_cm_Startup。當Outlook啟動時連接我們的加載項,這個參數被設置為ext_cm_Startup。
AddInInst參數:傳遞引用COM加載項當前實例的對象。
Custom()參數:一個Variant數據類型的陣列,可以存儲用戶定義的加載項數。對于Office2000加載項,本參數忽略。
當COM加載項與應用程序斷開連接時,將發生OnDisconnection事件。
當發生OnDisconnection事件,將傳遞以下兩個參數:
RemoveMode參數:指定加載項的斷開方式,它可以被設置為以下常量:ext_dm_HostShutdown或ext_dm_UserClosed。顧名思義,ext_dm_HostShutdown表示加載項通過關閉主機來斷開;ext_dm_UserClosed表示用戶在“COM加載項”對話框中取消選中加載項的復選框或加載項的Connect屬性被設置為False時斷開加載項。
Custom()參數:一個Variant數據類型的陣列,可以存儲用戶定義的加載項數。對于Office2000加載項,本參數忽略。
可以使用OnDisconnection事件來恢復對應用程序所做的更改,或者執行常規的應用程序來清理操作。
確保撤銷您創建的所有檢測對象,因為如果這些對象仍舊存在,那么Outlook將無法正常關閉。
對于在啟動主控應用程序時連接COM加載項的情況,當主機完成所有的啟動例程時,將觸發OnStartupComplete事件。如果用戶在加載應用程序后從“COM加載項”選擇加載項時,不會發生OnStartupComplete事件。在這種情況下,將發生OnConnection事件。
該事件過程是將一些全局和本地變量設置為與它們相應的Outlook對象的好地方。
當應用程序將要關閉并且在OnDisconnection事件之前調用時,將觸發OnBeginShutdown事件。甚至在觸發OnBeginShutdown事件之后,您仍然完全可以訪問Outlook對象模型,因此您可以卸載對象之前保存注冊表或者文件的設置,也可以保存對您的對象所做的修改。
當更新COM加載項的列表時,將觸發OnAddInsUpdate事件??梢允褂帽臼录泶_保您的加載項所以來的其他加載項是連接的。
OnConnection事件中,我們預先讀取注冊表,把默認參數讀出來。
同時,通過調用
Set g_oApplication = Application
得到整個模型的根對象。
Disclaimers:
clearcase/" target="_blank" >cc6633; PADDING-BOTTOM: 0cm; BORDER-LEFT: #333399; WIDTH: 163pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #333399" width=217>
Programmer’s Blog List: |
|
|
|
|
|
|
[MVPLeader] |
|
|
|
|
|
|
|
本文檔僅供參考。本文檔所包含的信息代表了在發布之日,zhengyun對所討論問題的當前看法,zhengyun不保證所給信息在發布之日以后的準確性。
用戶應清楚本文檔的準確性及其使用可能帶來的全部風險??梢詮椭坪蛡鞑ケ疚臋n,但須遵守以下條款:
原文轉自:http://www.anti-gravitydesign.com