Кнопка "Вызвать ленту" в Outlook 2013
У нас есть надстройка для Outlook. Нам нужно программно отменить назначение задачи в окне TaskItem Inspector, так же, как это делает кнопка "Отменить назначение".
Можно подумать, что зовет TaskItem.CancelResponseState()
может работать. Хотя это отменяет назначение, оно также оставляет задачу в неназначаемом состоянии. Кнопка "Назначить задачу" на ленте отключена.
В Outlook 2007 и 2010 мы можем получить CommandBarButton
объект для кнопки Отменить назначение и вызвать ее Execute()
метод. Это дает нам желаемое поведение. Однако в Outlook 2013 эта кнопка панели команд больше не существует. Это неудивительно, так как панели команд инспектора были заменены на Ленту в 2007 году. Объект CommandBarButton все еще существовал программно, хотя и для обратной совместимости. В Outlook 2013 Microsoft наконец-то удалила этот объект.
Таким образом, вопрос: есть ли способ программно "нажать" на кнопку ленты? Если нет, есть ли другой способ отменить назначение задачи, как это делает кнопка с лентой?
1 ответ
Вы можете попробовать использовать Redemption и его объект SafeRibbon:
'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
РЕДАКТИРОВАТЬ. В C# это будет выглядеть примерно так (при условии, что вы добавили Redemption к ссылкам вашего проекта):
//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