Frage

Wie kann ich einen Event-Handler für SendAndReceive Falle Kontakt Ordner / Kontaktobjekte in Outlook 2007 mit VSTO AddIn anhängen? Ich habe versucht, mit:

Application.ActiveExplorer().SyncObjects.ForEach
{
   SyncObject.SyncEnd += \\Do something
}

Aber es funktioniert nicht.

War es hilfreich?

Lösung

Ich habe versucht,

Application.ActiveExplorer().SyncObjects.AppFolders.SyncEnd += \\EventHandler

Diese Haken auf Senden / Empfangen aller Standard-Ordner ..

Andere Tipps

Eigentlich war mein Bedürfnis ein wenig anders, aber kann das gleiche sein:     Ich wollte die Änderungen eines Ordners (Termine in meinem Fall) benachrichtigt wird, nach einem Senden / Empfangen. Mein erster Gedanke (und ich denke, Sie auf dem gleichen Weg sind) war für einen Sende zu überprüfen / Veranstaltung erhalten und vielleicht einige Sammlung von Gegenständen aus ihm heraus oder etwas ähnliches, aber nicht so etwas zur Verfügung steht. (Wie erläutert auch in dieses Forum als Beitrag )

Mein zweiter Weg kam aus dem folgenden Artikel : ich zum Item_Add und Item_Change (und sogar Item_Removed) bei einem Ordner registrieren kann (der auch durch die Änderungen von einem Sende erhalten getan ausgelöst werden):

Einige Code:

// Get the folder calendar folder and subscribe to the events.
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).Items.ItemAdd += new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
    Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).Items.ItemChange += new Microsoft.Office.Interop.Outlook.ItemsEvents_ItemChangeEventHandler(Items_ItemChange);
}

// Do something with it.
void Items_ItemAdd(object Item)
{
    logItem(Item, "Add");
}
void logItem(object Item, string Action)
{

    Outlook.AppointmentItem item = Item as Outlook.AppointmentItem;

    File.AppendAllText(@"e:\log.txt", string.Format("Item {0}: {1}", Action, Item));

    if (item != null)
    {
        File.AppendAllText(@"e:\log.txt", " - Appointment: " + item.Subject);
    }
}

Sie können den Mail-Sende / Empfangs-Ereignis anschließen und dann prüfen, ob der Mail-Typ ein ContactItem ist. Hier ist ein Beispiel für das Senden Ereignis.

// hook up the event
this.Application.ItemSend += ThisApplication_SentMail;

dann in Ihrem Ereignishandler überprüfen Sie die Postsendung Typ;

internal void ThisApplication_SentMail(object item, ref bool cancel)
{
    Outlook.ContactItem contactItem = item as Outlook.ContactItem;

    // mail message is not a ContactItem, so exit.
    if (contactItem == null) return;

    // do  whatever you need to here

 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top