2015-05-19 29 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(); 
相关问题