2015-05-19 37 views
0

背景是我有一箇舊插件,我用它來安裝其他插件並刪除ThisAddIn_Startup上的舊插件。一切似乎工作正常,但發現一臺電腦解決方案沒有工作。是否可以重新加載outlook的Office.ComAddIn列表?

我成功安裝並刪除了插件,但插件在第一次加載時不加載。

private static void EnableNewPlugin() 
{ 
    Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); 
    object index = "NewAddin"; 
    Office.COMAddIn addin = null; 
    addin = app.COMAddIns.Item(ref index); 
    addin.Connect = false; 
    addin.Connect = true; 
} 

那麼這種方法適用於所有的其他計算機,但問題是在這一個PC似乎它並沒有發現它在app.COMAddIns列表。所以我的問題是如何以編程方式重新啓動COMAddIns列表?

回答

1

的COMAddins收集的Update方法用於刷新COM的列表加載項從Windows註冊表。

但是,爲什麼你需要在代碼中創建一個新的Outlook應用程序實例?你開發一個Outlook加載項嗎?如果是這樣,您可以使用加載項類的應用程序屬性。或者,您可以在運行時使用Marshal類的GetActiveObject方法獲取正在運行的Outlook實例的實例。有關更多信息,請參閱How to: Get and Log On to an Instance of Outlook

此外,我會建議打破調用鏈並聲明每個屬性或方法調用在單獨的代碼行上。因此,您將能夠立即釋放所有潛在的COM對象。完成使用後,請使用System.Runtime.InteropServices.Marshal.ReleaseComObject釋放Outlook對象。然後在Visual Basic中將變量設置爲Nothing(C#中的空值)以釋放對該對象的引用。請閱讀MSDN中Systematically Releasing Objects文章的更多內容。

1

如果有人面臨同樣的問題,這似乎適用於我。

COMAddIns.Update(); 
相關問題