MS Outlook は、Outlook 予定表アイテムにアクセスするための MAPI を提供します。カレンダー アイテムを使用すると、Outlook の定期的および非定期的な予定をすべて見つけることができます。定期的な予定の場合、定期的な予定のすべての発生は、AppointmentItem の RecurrencePattern の GetOccurence 関数を使用して見つけることができます。GetOccurence 関数は、日付と時刻を取得して、その日付のオカレンスを返します。オカレンスが存在する場合は戻りますが、そうでない場合は例外が発生します。
定期的な予定のすべての発生が同じ StartTime と EndTime である場合、GetOccurence に starttime 入力を提供すると、完全に正常に機能します。ただし、特定の発生 StartTime および EndTime が変更された場合、GetOccurence はその発生を返しません。もう 1 つの方法は、毎日 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());