2014-12-11 100 views
0

我有一个小型VSTO加载项,我已经使用了Outlook 2010一段时间。迁移到Office 2013/Outlook 2013即将发生,因此需要重新编写加载项以与Outlook 2013一起使用。替代CommandBarControl for Outlook 2013 VSTO加载项

Outlook加载项由自定义功能区按钮触发。触发后,加载项将创建一个新的会议请求窗口,并用一些自定义内容填充消息正文。之后,用户可以完成会议请求并根据需要发送。

我目前遇到的问题是,此消息窗口是使用CommandBarControl对象以编程方式触发Outlook中“新建会议”按钮的单击创建的。这适用于以前版本的Outlook,but I gather that the CommandBarControl object has been removed from Outlook 2013,现在默默无法工作。这确实是我所看到的。

正被用于创建新的会议请求原始代码是这样的:

Explorer activeExplorer = Globals.ThisAddIn.Application.ActiveExplorer(); 

CommandBarControl commandBarControl = activeExplorer.CommandBars.FindControl(Type.Missing, 1106); 
commandBarControl.Execute(); 

appointmentItem = (AppointmentItem)Globals.ThisAddIn.Application.ActiveInspector().CurrentItem; 
appointmentItem.MeetingStatus = OlMeetingStatus.olMeeting; 
appointmentItem.RTFBody = message; // message is a byte array being passed in from elsewhere. 

的的FindControl()方法用于查找Outlook中的“新建会议”按钮,然后执行()一点击该按钮上的动作。

另一种可能是这样的:

appointmentItem = (AppointmentItem)Globals.ThisAddIn.Application.CreateItem(OlItemType.olAppointmentItem); 
appointmentItem.MeetingStatus = OlMeetingStatus.olMeeting; 
appointmentItem.RTFBody = message; // message is a byte array being passed in from elsewhere. 
appointmentItem.Display(false); 

第二个代码块也将创造一个新的会议请求窗口和工作在Outlook 2013中,但也有一对夫妇与第二微妙但重要的区别代码块...

  1. 创建的会议请求不会继承,在他们的日历用户以前点击日期和时间,而是将默认为当前日期/时间,无论什么日期/时间用户点击了他们的日历。
  2. 创建的会议请求不会考虑用户“代表”另一个用户创建会议请求的情况,因为它忽略了在用户发起新会议请求之前点击了哪个日历。

所以我的问题是这样的:如何在Outlook 2013中以编程方式创建(使用VSTO加载项)新会议请求,以尊重用户之前点击过哪个日历?也就是说,它会满足以上两个要求,即以前使用CommandBarControl对象管理满足?

回答

0

说得对,在Office 2010中不推荐使用命令栏。现在改为使用Fluent UI。你可以阅读更多有关新UI在以下系列文章:

您可以运行程序使用CommandBars.ExecuteMso所需的功能区按钮方法(请参阅Explorer和Inspector类的CommandBars属性)。你只需要传递你需要运行的内置控件的idMso值。下面的链接提供了内置控件列表的Office 2010和2013:

相关问题