C#Outlook附加组件:检查日历可用性

时间:2013-03-21 11:09:36

标签: c# outlook-addin

我正在使用C#处理Outlook的加载项,我希望能够检查日历(我和其他人)的可用性。我尝试使用GetSharedDefaultFolder(),但它只适用于那些特别授予我许可的人,即使我公司的所有日历都可以被其他人查看(我们可以查看主题和约会时间)。无论如何我能得到这些信息吗?感谢。

编辑:我想强调我的问题是GetSharedDefaultFolder()而不是GetDefaultFolder()(即查看其他人的日历。)此外,我只需要能够查看其他人的日历可用性,而不是完全访问日历。

2 个答案:

答案 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