c# Outlook以编程方式访问命令栏

本文关键字:访问 命令 方式 编程 Outlook | 更新日期: 2023-09-27 18:04:49

我试图以编程方式访问Outlook Ribbon上的一些按钮。所以我使用:

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
CommandBar command = app.ActiveExplorer().CommandBars.OfType<CommandBar>().First();
CommandBarControl button = command.Controls.OfType<CommandBarControl>().Where(x => x.Caption == "label of my button").First();
button.Execute();

问题是每个命令栏只返回1 Control…如何访问Ribbon中的所有控件?

谢谢

c# Outlook以编程方式访问命令栏

正如Eugene提到的,您可以使用Accessibility API。如果使用Redemption是一个选项(我是它的作者),它将公开SafeExplorer和SafeInspector对象,这些对象提供对功能区控件的访问,并允许执行它们的默认操作。下面的例子(VB脚本)执行"OneNote"按钮上的"首页";丝带:

 set sExplorer = CreateObject("Redemption.SafeExplorer")
 sExplorer.Item = Application.ActiveExplorer
 set Ribbon = sExplorer.Ribbon
 oldActiveTab = Ribbon.ActiveTab
 Ribbon.ActiveTab = "Home"
 set Control = Ribbon.Controls("OneNote")
 Control.Execute
 Ribbon.ActiveTab = oldActiveTab 'restore the active tab

命令栏已弃用,不再使用(仅用于以编程方式执行按钮)。您需要使用Fluent UI。

但是Fluent UI不提供任何通过编程迭代现有控件的方法。作为一种变通方法,您可以使用可访问性API (Windows API)函数来完成工作。

您可以在MSDN的以下文章中阅读更多关于功能区UI的信息:

  • 为开发人员定制2007 Office Fluent功能区(1/3)
  • 为开发人员定制2007 Office Fluent功能区(2/3)
  • 为开发人员定制2007 Office Fluent功能区(3/3)