C# 如何显示尚未与我共享的Outlook日历?

C# 如何显示尚未与我共享的Outlook日历?,c#,calendar,outlook,C#,Calendar,Outlook,我正在使用以下代码: var msOutlook = new Microsoft.Office.Interop.Outlook.Application(); var session = msOutlook.Session; var recipient = session.CreateRecipient(textBox1.Text); var folder = session.GetSharedDefaultFolder(recipient, OlDefaultFolders.olFolderCa

我正在使用以下代码:

var msOutlook = new Microsoft.Office.Interop.Outlook.Application();
var session = msOutlook.Session;
var recipient = session.CreateRecipient(textBox1.Text);
var folder = session.GetSharedDefaultFolder(recipient, OlDefaultFolders.olFolderCalendar);
folder.Display();
这对于一个明确与我共享的日历来说很好,但对于其他任何人来说都不行

但是-如果我进入Outlook,打开我的日历,然后单击“打开日历”并选择其他人的日历,那么我可以看到所有条目,即使它没有显式共享


有没有办法通过编程让Outlook显示此屏幕?

您可以使用SelectNames对话框显示Outlook通讯簿。请参见

单击“姓名”按钮时,您是指通讯簿窗口吗?我的意思是打开日历视图,然后单击工具栏上的“打开日历”,然后从通讯簿中选择某人。如果按Ctrl+Shift+B,会出现相同的窗口,对吗?这是选择器,是的。这不是我想要的通讯簿。这是他们的日历。如果打开“日历”视图,然后单击“打开日历”并从“通讯簿”中选择某人,则在Outlook 2010中会得到一个。GetSharedDefaultFolder就是您所需要的。如果日历文件夹未共享,您最好使用Recipient.FreeBusy.Thank请求忙/闲信息。看起来Outlook可以自己完成编程无法完成的事情!