2017-03-22 3 views
0

Ich schreibe ein Outlook-Plugin, das die Erstellung von Kalendereinträgen verfolgen muss. Ich verwende den folgenden Code zu erkennen, wenn etwas in den Kalender vom Benutzer hinzugefügt wird:Erfassen von Kalendereinträgen, die nur auf dem lokalen Computer erstellt wurden

  foreach (Account acc in _outlookApplication.Session.Accounts) 
     { 
      var calendar = acc.DeliveryStore.GetDefaultFolder(OlDefaultFolders.olFolderCalendar); 
      var itemsCalendar = calendar.Items; 
      itemsCalendar.ItemAdd += new ItemsEvents_ItemAddEventHandler(OnMeetingCreated); 
     } 

Das funktioniert gut auf dem lokalen Computer und das Ereignis ausgelöst wird richtig. Wenn der Benutzer jedoch zwei Computer mit demselben E-Mail-Konto eingerichtet hat, wird dieses Ereignis auch auf dem sekundären Computer ausgelöst, sobald Outlook auf dem sekundären Computer synchronisiert und die neu erstellten Besprechungselemente vom Benutzer auf dem primären Computer herunterlädt.

Gibt es eine Möglichkeit, Besprechungen zu ignorieren, die nicht vom Benutzer auf dem lokalen Computer erstellt wurden?

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

ALLE Daten werden auf dem lokalen PC erstellt, entweder in einer PST- oder OST-Datei. Wenn Ihr Add-In das Element erstellt und Sie dieses Element im ItemAdd-Ereignis ignorieren oder verarbeiten möchten, müssen Sie eine speicherinterne Auflistung von Elementen verwalten, mit denen Sie vergleichen möchten.

Alternativ können Sie ein maschinenspezifisches Token zu einer benutzerdefinierten Eigenschaft im Element hinzufügen und dieses als Vergleichsmarkierung verwenden.

+0

Danke für die Antwort. Leider werden die Kalenderelemente manuell von Benutzern erstellt oder indem eine Besprechungseinladung akzeptiert wird. Gibt es eine Möglichkeit, diesen Prozess abzufangen und den Eigenschaften ein eindeutiges Token hinzuzufügen, bevor das ItemAdd-Ereignis ausgelöst werden kann? – NASHA

+1

Ja, behandeln Sie einfach die Application.NewInspector Ereignis- und Setup-Ereignisbehandlungsroutinen, die für das AppointmentItem-Objekt erforderlich sind (z. B. PropertyChange, Close usw.). –

+0

Ah, wusste das nicht. Vielen Dank! – NASHA

Verwandte Themen