0

我有一个 Outlook 加载项,我想从中使用 Redemption 调用 Ribbon Split 按钮的下拉项。此拆分按钮是从其他加载项创建的自定义按钮。我想在我的加载项中访问。有关详细说明,请查看以下链接。使用兑换调用功能区拆分按钮当我尝试访问时,我遇到了同样的错误。有人可以帮我解决这个问题。在这里,我试图在另一篇文章中试图调用拆分按钮的按钮的地方调用下拉项目,而且我附上了非常清晰的图像。检查链接中的图像。(链接帖子已经由堆栈溢出中的其他人发布了很久)

在此处输入图像描述

4

2 回答 2

0

如果需要在 Office 应用程序中执行任何控件的操作,则需要使用CommandBars 类的ExecuteMso方法(请参阅 Explorer.CommandBars 或 Inspector.CommandBars)。它允许执行由 idMso 参数标识的控制。以下是 MSDN 对该方法的说明:

此方法在特定命令没有对象模型的情况下很有用。适用于内置按钮、toggleButtons 和 splitButtons 的控件。失败时,它为无效的 IdMso 返回 E_InvalidArg,为未启用或不可见的控件返回 E_Fail。

您可以在以下文档中找到内置控件的列表:

如果您需要运行来自另一个插件的任何自定义控件的操作,您可以使用.Net 中以反射为代表的后期绑定技术直接调用事件处理程序。有关详细信息,请参阅Type.InvokeMember方法。该方法在其他 Office 解决方案中的 VSTO 加载项中调用代码一文中进行了深入描述。

于 2016-03-23T18:39:51.430 回答
0

您不能像使用 CommandBars 界面那样在 Office 功能区中自由访问按钮 - 无论是什么编程语言。这是 Microsoft 的设计决定。

正如其他人所提到的,有一些用于访问 Office 应用程序提供的内置控件的规定:CommandBars.ExecuteMso 和辅助功能 API。但是,这些不适用于自定义按钮。

可以“共享”另一个加载项的功能区控件,前提是加载项已为其共享的控件使用命名空间和 idQ 属性。但是,这不会使您的代码运行其他加载项代码。(请参阅此 MSDN 文章:https://msdn.microsoft.com/en-us/library/aa338202(v=office.12)

唯一的可能性,但它不可靠,是使用 SendKeys(模拟用户键入)来发送命令的 Alt+键盘快捷键组合。这不可靠的原因是因为 Office 可以随时更改快捷方式,如果它与 UI 中那个特定时刻存在的任何其他快捷方式冲突。

于 2016-03-28T21:39:32.837 回答