0

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

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

4

2 回答 2

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());
                }
            }

        }

似乎与此类似的问题>

http://www.add-in-express.com/forum/read.php?FID=5&TID=8953

因此,请关注此链接上的讨论。它可能对你有帮助。

于 2013-03-21T11:15:36.767 回答
1

不要直接访问文件夹 - 使用 Recipient.FreeBusy 或 AddressEntry.GetFreeBusy

于 2013-03-21T14:02:17.047 回答