gpt4 book ai didi

ms-office - 显示或隐藏 VSTO 加载项功能区

转载 作者:行者123 更新时间:2023-12-05 05:17:19 25 4
gpt4 key购买 nike

我的目标是在使用特定参数启动 Office 应用程序时简单地提供我的插件。

不幸的是,我找不到任何可以帮助我做到这一点的东西。我尝试使用 Office Application Load Addin swtich /lc:Addin.dll 但没有成功。我接受的一个选择是在希望启动插件时创建所有 Office 插件注册表项,但这似乎非常笨拙并且开销很大。此外,对我来说破坏交易的是需要注册表创建提升权限才能初始化插件。

我决定让我的插件在启动时不做任何事情,除非存在特定的环境变量。

为了以这种方式执行此操作,我需要将功能区默认设置为不可见,并在发现 env 变量时显示功能区。或者相反,默认情况下显示功能区,并在发现 env 变量时隐藏功能区。

我尝试过的事情

  • 设置功能区的选项卡 Globals.Ribbons.MyRibbon.MyTab.visible = false
  • 使功能区失效 Globals.Ribbons.MyRibbon.RibbbonUi.Invalidate()
  • 在将可见设置为 false Globals.Ribbons.MyRibbon.RibbbonUi.InvalidateControl(tabCtrlId) 后使选项卡失效。

尝试过的东西不包括在某些情况下仅尝试加载插件的几十种东西。

最佳答案

我想出了一个解决方案。

在深入研究基类 AddinBase 之后,我发现了一些可供我重写的方法。

所以我覆盖了 CreateRibbonExtensibilityObject 方法。

protected override IRibbonExtensibility CreateRibbonExtensibilityObject( )
{
if( Environment.GetCommandLineArgs( ).ToList( ).FirstOrDefault( a => a.ToLower( ).Contains( "/launchmyaddin" ) ) != null )
{
return null;
}

return base.CreateRibbonExtensibilityObject( );
}

What this does is prevent the ribbon from even being created if my switch is present and if it is present then I just pass off to the base class implementation in order to have the Addin create my ribbon like normal.

此外,CreateRibbonExtensibilityObject() 返回一个具有 GetCustomUI( ribbonXml ) 的对象,因此我们可以从 xml 创建自定义功能区。这给了我们更多的力量。

我的解决方案只需要在启动时显示/隐藏功能区一次。我确实考虑过如何打开和关闭它,所以我四处寻找我可以覆盖的其他成员。

我相信您可以覆盖 CreateRibbonObjects( ) 成员,我认为每次调用功能区的无效时都会调用该成员。在这里,您可以从基类返回的代表您希望隐藏的功能区的集合中删除该项目。

关于ms-office - 显示或隐藏 VSTO 加载项功能区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49392887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com