我正在使用C#处理Outlook的加载项,我希望能够检查日历(我和其他人)的可用性。我尝试使用GetSharedDefaultFolder(),但它只适用于那些特别授予我许可的人,即使我公司的所有日历都可以被其他人查看(我们可以查看主题和约会时间)。无论如何我能得到这些信息吗?感谢。
编辑:我想强调我的问题是GetSharedDefaultFolder()而不是GetDefaultFolder()(即查看其他人的日历。)此外,我只需要能够查看其他人的日历可用性,而不是完全访问日历。
答案 0 :(得分:1)
试试这个>>
public void GetAllCalendarItems()
{
Microsoft.Office.Interop.Outlook.Application oApp = null;
Microsoft.Office.Interop.Outlook.NameSpace mapiNamespace = null;
Microsoft.Office.Interop.Outlook.MAPIFolder CalendarFolder = null;
Microsoft.Office.Interop.Outlook.Items outlookCalendarItems = null;
oApp = new Microsoft.Office.Interop.Outlook.Application();
mapiNamespace = oApp.GetNamespace("MAPI"); ;
CalendarFolder = mapiNamespace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar); outlookCalendarItems = CalendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = true;
foreach (Microsoft.Office.Interop.Outlook.AppointmentItem item in outlookCalendarItems)
{
if (item.IsRecurring)
{
Microsoft.Office.Interop.Outlook.RecurrencePattern rp = item.GetRecurrencePattern();
DateTime first = new DateTime(2008, 8, 31, item.Start.Hour, item.Start.Minute, 0);
DateTime last = new DateTime(2008, 10, 1);
Microsoft.Office.Interop.Outlook.AppointmentItem recur = null;
for (DateTime cur = first; cur <= last; cur = cur.AddDays(1))
{
try
{
recur = rp.GetOccurrence(cur);
MessageBox.Show(recur.Subject + " -> " + cur.ToLongDateString());
}
catch
{ }
}
}
else
{
MessageBox.Show(item.Subject + " -> " + item.Start.ToLongDateString());
}
}
}
似乎与此类似的问题&gt;
http://www.add-in-express.com/forum/read.php?FID=5&TID=8953
请按照此链接进行讨论。它可能对你有所帮助。
答案 1 :(得分:1)
不要直接访问该文件夹 - 使用Recipient.FreeBusy或AddressEntry.GetFreeBusy