2009-06-18 5 views

Antwort

2

Ich versuchte

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

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

0

Eigentlich war mein Bedarf ein bisschen anders aber vielleicht gleich: Ich wollte über die Änderungen eines Ordners (Termine in meinem Fall) nach einem Senden/Empfangen benachrichtigt werden. Mein erster Gedanke (und ich denke, Sie sind auf der gleichen Spur) war, nach einem Sende-/Empfangs-Ereignis zu suchen und vielleicht eine Sammlung von Gegenständen daraus oder etwas ähnliches zu bekommen, aber keine solche Sache ist verfügbar. (Wie auch in this forum post erklärt)

Mein zweiten Weg vom following article kam: ich zum Item_Add und Item_Change anmelden kann (und sogar Item_Removed) bei einem Ordner (der auch von einem Sende erfolgt durch die Veränderungen ausgelöst receive):

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); 
    } 
} 
0

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.

Dann überprüfen Sie in Ihrem Event-Handler die Mail-Art;

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 

} 
Verwandte Themen