Mario  Meir-HuberOffice Developer Serie: Outlook 1


Nachdem es im Netz noch sehr spärliche Informationen zur Outlook entwicklung gibt, habe ich mich dazu entschlossen, eine Serie zum Thema Outlook Entwicklung zu starten. Hierfür sollten Kenntnisse in Outlook bereits vorhanden sein.

Im ersten Teil möchte ich herzeigen, wie man auf Veränderungen bei Outlook-Kontakten reagiert. Als erster Schritt muss man ein "ItemLoad" Event hinzufügen. Dies ist vorzugsweise im Konstruktor oder in der "InternalStartup" Prozedur erreichbar. Die Prozedur "InternalStartup" ist in der "#region VSTO generated Code" zu finden.

private void InternalStartup()
{
    this.Startup += new System.EventHandler(ThisAddIn_Startup);
    this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);

    this.Application.ItemLoad += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);
}

Hier stellt die fett geschriebene Zeile die Änderung dar. Nun wollen wir uns das Event bearbeiten. Dies sollte von Visual Studio bereits automatisch generiert worden sein.

In dieser Methode wird nun ein ContactItem erstellt. Dieses wird mit "Item as Outlook.ContactItem" gecastet. Wichtig ist hier, das nicht (Outlook.ContactItem)Item verwendet wird, weil sonst sehr häufig Fehler auftreten werden - Die Methode wird nämlich auch aufgerufen wenn man z.B. eine E-Mail lädt. Danach fügen wir noch ein Event für "PropertyChange" hinzu, welches dann Auftritt, wenn Eigenschaften geändert werden.

void Application_ItemLoad(object Item)
{
    Outlook.ContactItem Contact = Item as Outlook.ContactItem;

    //Hier wird überprüft, ob es ein Kontakt ist - also ob es nicht null ist
    if (null != Contact)
    {
        //Wenn es nicht null ist wird ein Change-Event hinzugefügt
        Contact.PropertyChange += new Microsoft.Office.Interop.Outlook.ItemEvents_10_PropertyChangeEventHandler(Contact_PropertyChange);
    }
}

Nun muss auch noch die Ausgabe erstellt werden. Hierfür wird einfach der String auf Debug.WriteLine ausgegeben.

void Contact_PropertyChange(string Name)
{
    Debug.WriteLine(Name);
}

 

image

... Änderungen in Outlook sehen auf der Konsole folgendermaßen aus:

The thread 0x15d8 has exited with code 0 (0x0).
'outlook.exe' (Managed): Loaded 'C:\Users\i-mameir\AppData\Local\assembly\dl3\B8DCN2QN.TBN\XN32MYXR.3ZO\a38af54d\60e2530e_48c6c801\OutlookAddIn1.DLL', Symbols loaded.
CompanyAndFullName
FullNameAndCompany
Subject
FileAs
CompanyName
JobTitle
MobileTelephoneNumber

Wichtige Information: einige Änderungen (z.B. Unternehmen) lösen gleich mehrere Änderungen aus.

Ferner empfhielt es sich bei ItemClose den Handler auf "PropertyChange" wieder zu entfernen.



Kategorien: .Net;C#;Office;VSTO; 04.06.2008 16:08:07


 


Neuen Kommentar einfügen:

  Titel:   
  Name:
  E-Mail:
  Kommentar:

 
 


Kommentare




© Copyright 2008 ppedv AG