检测仅在本地计算机上创建的日历项目

问题描述:

我正在编写一个需要跟踪日历项目创建的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事件中的该项目,则需要管理要与之比较的内存项目集合。

或者,您可以将机器特定的令牌添加到项目中的自定义属性,并将其用作比较标志。

+0

感谢您的回复。不幸的是,日历项目是由用户手动创建或通过接受会议邀请等。是否有方法来拦截此过程并添加一个唯一的标记的属性之前,可以触发ItemAdd事件? – NASHA

+1

是的,只需处理AppointmentItem对象(如PropertyChange,Close等)所需的Application.NewInspector事件和设置事件处理程序即可。 –

+0

啊,不知道那个。谢谢! – NASHA