【问题标题】:how to auto load unload a custom add-in in Microsoft word using C# VSTO?如何使用 C# VSTO 自动加载卸载 Microsoft Word 中的自定义加载项?
【发布时间】:2018-02-27 19:50:41
【问题描述】:

如何在单击按钮时以编程方式在 Word 中加载和卸载 VSTO 加载项。

我已经使用下面的代码在事件点击 bu 上卸载了它。

foreach (Office.COMAddIn addin in Globals.ThisAddIn.Application.COMAddIns)
                            {
                                if (addin.ProgId == "DocDrafter")
                                {
                                    addin.Connect = false;
                                    return;
                                }
                            }

但在文档更改和文档开始时,我必须再次加载加载项。

但是一旦插件被卸载,我就无法再次加载它。

【问题讨论】:

  • 在您发表评论之前,我还没有意识到您没有考虑过这部分...从逻辑上讲,如果您卸载加载项,则无法使用加载项重新自己加载!因此,请告诉我们更多关于为什么要卸载加载项的信息。如果仅针对特定文档或文档类型,您不应该有文档级自定义,而不是应用程序级加载项吗?或者它应该是一个加载项,但 UI 的某些部分有时不可见?或者您是否需要两个加载项:一个用于处理文档,另一个“不可见”处理您提到的事件?
  • 实际上,我有两个版本的文档...对于版本 1,我想使用插件。如果用户打开版本 2 文档,我希望插件应该被禁用或不应该对用户可见或卸载它..但我用户再次打开该文档应该存在的版本 1。实际上我是 vsto 和 word 插件的新手,所以我找不到正确的解决方案。
  • 您有插件吗?或者您是否有文档级别的自定义?文档级自定义是特定于文档(或模板和从模板创建的所有文档)。加载项适用于整个 Word 应用程序。在我看来,您需要阅读 MSDN 上有关文档级自定义的 VSTO 文档。
  • 我有一个加载项,我认为我不需要/需要文档级自定义?
  • 如果您想将自定义用户界面限制为仅一个文档或文档类型(从模板创建),则需要文档级自定义。根据您告诉我们的情况(文档 1 与文档 2)。

标签: c# vsto office-addins


【解决方案1】:

您有几种可能性 - 这取决于您想要做什么。首先,您应该(已经)阅读 Word 对象模型帮助中有关AddIns 集合和Addin 对象的信息。 (我们正在为您的 VSTO 项目讨论 Globals.ThisAddIn.Application.Addin/s。)

基本上有两种方法。一种是使用 Addin 对象的 Installed 属性,该对象从 Word UI 加载(=true)/卸载(=false)加载项,将其留在加载项列表(列表在 Word 的文件/选项/加载项选项卡中),以便用户(或您的代码)可以根据需要再次加载它。听起来这就是您所需要的。

另一种方法是从该列表中删除/添加加载项。使用Addin.Delete方法删除加载项;使用Addins.Add 将加载项添加到列表中。

如果您从 VSTO 项目中断开外接程序,就像您的代码一样,我认为在 VSTO 范围内没有任何方法可以再次连接它...

文档中的帮助主题:从这里开始:https://msdn.microsoft.com/en-us/vba/word-vba/articles/addins-add-method-word

【讨论】:

  • Cindy Meister,请你给我看一下 C# 代码中的任何一种方法。我怎样才能实现它。
猜你喜欢
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多