C# 如何判断是否已在Outlook中发送会议邀请?

C# 如何判断是否已在Outlook中发送会议邀请?,c#,outlook-addin,outlook-2007,C#,Outlook Addin,Outlook 2007,我正在使用C#为Outlook编写COM加载项。如果会议已保存,但邀请未发送,Outlook会在表单顶部显示一条消息,说明邀请尚未发送。如何以编程方式确定尚未发送会议邀请 我试着检查每个收件人并检查会议响应状态。如果邀请尚未发送,我希望是OlResponseNone,如果邀请已发送但未收到响应,则为OlResponseNone。但是,对于尚未发送邀请或尚未回复的收件人,我总是会收到olresponseOne。因此,我无法区分没有发出邀请的会议和发出邀请但没有人响应的会议 我在Outlook 20

我正在使用C#为Outlook编写COM加载项。如果会议已保存,但邀请未发送,Outlook会在表单顶部显示一条消息,说明邀请尚未发送。如何以编程方式确定尚未发送会议邀请

我试着检查每个
收件人
并检查
会议响应状态
。如果邀请尚未发送,我希望是
OlResponseNone
,如果邀请已发送但未收到响应,则为
OlResponseNone
。但是,对于尚未发送邀请或尚未回复的收件人,我总是会收到
olresponseOne
。因此,我无法区分没有发出邀请的会议和发出邀请但没有人响应的会议


我在Outlook 2007中完成了大部分测试,但我相信2003年和2010年也是如此,所有这些我都需要支持。

我在中找到了部分答案。我需要阅读DASL属性“http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-0000000000 46}/80BE0102”。在Outlook 2007和leter中,您可以使用PropertyAccessor执行此操作,如下所示:

appointment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102");
但是,我还需要支持Outlook 2003,并且在Outlook 2007中添加了PropertyAccessor属性。因此,我能够使用以下代码(省略错误处理)

var _session = New RDOSession();
_session.Logon();
var _message = _session.GetMessageFromID(appointment.EntryID, ((Outlook.MAPIFolder)appointment.Parent).StoreID);
return (bool)_message.Fields["http://schemas.microsoft.com/mapi/id/{00062002-0000-0000-C000-000000000046}/8229000B"];
Marshal.ReleaseComObject(_message);
_session.Logoff();
Marshal.ReleaseComObject(_session);