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中的所有控件?
谢谢
正如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)