检测仅在本地计算机上创建的日历项目
问题描述:
我正在编写一个需要跟踪日历项目创建的Outlook插件。我使用下面的代码的东西时,由用户添加到日历检测:检测仅在本地计算机上创建的日历项目
foreach (Account acc in _outlookApplication.Session.Accounts)
{
var calendar = acc.DeliveryStore.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var itemsCalendar = calendar.Items;
itemsCalendar.ItemAdd += new ItemsEvents_ItemAddEventHandler(OnMeetingCreated);
}
这种运作良好,本地计算机和事件触发正确的。但是,如果用户有两台机器设置了相同的电子邮件帐户,则一旦辅助机器上的Outlook同步并由主机上的用户下载新创建的会议项目,该事件也将在辅助机器上触发。
有没有办法忽略不是由用户在本地机器上创建的会议?
任何帮助将不胜感激。
答
所有数据都在本地PC上创建,无论是在.pst还是.ost文件中。如果您的加载项正在创建项目,并且您想要忽略或处理ItemAdd事件中的该项目,则需要管理要与之比较的内存项目集合。
或者,您可以将机器特定的令牌添加到项目中的自定义属性,并将其用作比较标志。
感谢您的回复。不幸的是,日历项目是由用户手动创建或通过接受会议邀请等。是否有方法来拦截此过程并添加一个唯一的标记的属性之前,可以触发ItemAdd事件? – NASHA
是的,只需处理AppointmentItem对象(如PropertyChange,Close等)所需的Application.NewInspector事件和设置事件处理程序即可。 –
啊,不知道那个。谢谢! – NASHA