首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能重新加载outlook Office.ComAddIn列表?

是否有可能重新加载outlook Office.ComAddIn列表?
EN

Stack Overflow用户
提问于 2015-05-19 07:43:19
回答 2查看 706关注 0票数 0

背景是我有一个旧的加载项,用于安装其他加载项,并在ThisAddIn_Startup上删除旧的加载项。一切看起来都很好,但找到了一台解决方案不起作用的计算机。

我成功地安装和删除了加载项,但是外接程序不会在第一次加载时加载。

代码语言:javascript
复制
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列表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-19 10:08:50

更新集合的COMAddins方法用于刷新COMAddins注册表中的COM外接程序列表。

但是,为什么需要在代码中创建一个新的Outlook应用程序实例?您是否开发Outlook外接程序?如果是这样,则可以使用外接程序类的Application属性。或者,您可以使用Marshal类的GetActiveObject方法在运行时获得正在运行的Outlook实例的实例。有关详细信息,请参阅如何:获取和登录到Outlook实例

此外,我建议打破调用链,在单独的代码行上声明每个属性或方法调用。因此,您将能够立即释放所有底层COM对象。使用System.Runtime.InteropServices.Marshal.ReleaseComObject在完成使用后释放Outlook对象。然后在Visual中将变量设置为Nothing (C#中为null),以释放对对象的引用。请参阅MSDN中的系统释放对象文章中有关这一点的更多信息。

票数 1
EN

Stack Overflow用户

发布于 2015-05-19 08:41:49

如果有人面临同样的问题,这似乎对我有效。

代码语言:javascript
复制
COMAddIns.Update();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30319583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档