列出所有出现的Outlook定期约会

时间:2013-04-05 04:17:31

标签: visual-c++ com mfc outlook mapi

MS Outlook提供MAPI以访问Outlook日历项。使用日历项目,它可以找到所有经常性和非经常性的Outlook预约。在重复约会的情况下,可以使用AppointmentItem的RecurrencePattern的GetOccurence函数找到所有重复约会的出现。 GetOccurence函数将使用日期和时间返回该日期的出现次数。如果出现,则会返回,否则会产生异常。

如果定期约会的所有出现都具有相同的StartTime和EndTime,那么为GetOccurence提供启动时输入,效果非常好。但是如果修改了一个特定的出现时间StartTime和EndTime,那么GetOccurence将不会返回该出现的情况。另一种方法是每天检查每30分钟的出现次数。但这种方法似乎并不高效。

任何人都有更好的想法吗?

_ApplicationPtr olApp("Outlook.Application");
_NameSpacePtr olMAPI;
olMAPI = olApp->GetNamespace("MAPI");
hr = olMAPI->Logon("","",false,false);
MAPIFolderPtr olCalendarFolder = olMAPI->GetDefaultFolder(olFolderCalendar);
_ItemsPtr olCalendarItems = olCalendarFolder->GetItems();
_AppointmentItemPtr olAppt  = (_AppointmentItemPtr) olCalendarItems->GetFirst();
RecurrencePatternPtr recurPattern = olAppt->GetRecurrencePattern();
_AppointmentItemPtr _olAppt = recurPattern->GetOccurrence(recurPattern->GetPatternStartDate()+recurPattern->GetStartTime());

1 个答案:

答案 0 :(得分:0)

当然,请使用RecurrencePattern.Exceptions集合 - 请参阅http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.exceptions.aspx