在Outlook 2013中调用功能区按钮

在Outlook 2013中调用功能区按钮,outlook,outlook-addin,ribbon,outlook-2013,Outlook,Outlook Addin,Ribbon,Outlook 2013,我们有一个Outlook加载项。我们需要在TaskItem Inspector窗口中以编程方式取消任务分配,就像cancel assignment按钮那样 有人会认为调用TaskItem.cancelResponseEstate()可能会起作用。虽然它会取消分配,但它也会使任务处于不可分配状态。功能区上的“分配任务”按钮已禁用 在Outlook 2007和2010中,我们可以为取消分配按钮获取CommandBarButton对象,并调用其Execute()方法。这给了我们想要的行为。但是,在Ou

我们有一个Outlook加载项。我们需要在TaskItem Inspector窗口中以编程方式取消任务分配,就像cancel assignment按钮那样

有人会认为调用
TaskItem.cancelResponseEstate()
可能会起作用。虽然它会取消分配,但它也会使任务处于不可分配状态。功能区上的“分配任务”按钮已禁用

在Outlook 2007和2010中,我们可以为取消分配按钮获取
CommandBarButton
对象,并调用其
Execute()
方法。这给了我们想要的行为。但是,在Outlook 2013中,此命令栏按钮不再存在。这并不奇怪,因为Inspector命令栏在2007年被Ribbon取代。不过,为了向后兼容,CommandBarButton对象仍然以编程方式存在。使用Outlook 2013,Microsoft最终删除了此对象

所以问题是:有没有一种方法可以通过编程方式“单击”功能区按钮?如果没有,是否有其他方法可以像功能区按钮那样取消任务分配?

您可以尝试使用及其对象:

编辑。在C#中,它类似于以下内容(假设您在项目引用中添加了赎回):

您可以尝试使用及其对象:

编辑。在C#中,它类似于以下内容(假设您在项目引用中添加了赎回):


我们确实在外接程序的其他地方使用了Redemption,所以我会尝试一下,看看这是否能解决问题。有人能在C#中重写它吗?我找不到对应的关键字,我需要一个C#AddIn。请查看上面更新的答案以获取C#示例。创建了一个新问题我们确实在外接程序的其他地方使用了Redemption,所以我会尝试一下,看看这是否能解决问题。有人能用C#重写这个问题吗?我找不到对应的关键字,我需要一个C#AddIn。请查看上面更新的答案以获取C#示例。提出新问题
'simulate a click on the "Assign Task" button of an active Inspector
set sInspector = CreateObject("Redemption.SafeInspector")
sInspector.Item = Application.ActiveInspector
set Ribbon = sInspector.Ribbon
oldActiveTab = Ribbon.ActiveTab
Ribbon.ActiveTab = "Task"
set Control = Ribbon.Controls("Assign Task")
Control.Execute
Ribbon.ActiveTab = oldActiveTab 'restore the active tab
//simulate a click on the "Assign Task" button of an active Inspector
Redemption.SafeInspector sInspector = new Redemption.SafeInspector();
sInspector.Item = Application.ActiveInspector;
Redemption.SafeRibbon Ribbon = sInspector.Ribbon;
string oldActiveTab = Ribbon.ActiveTab;
Ribbon.ActiveTab = "Task";
Redemption.SafeRibbonControl Control = Ribbon.Controls.Item("Assign Task");
Control.Execute();
Ribbon.ActiveTab = oldActiveTab; //restore the active tab