In diesem Beispiel erstellen wir einfaches Outlook Addin welches einen Button in der Command Bar anzeigt. Nach einem Klick auf diesen kann ein Outlook Ordner ausgewählt werden, danach werden Informationen zu Kontakten in diesem Ordner angezeigt.

 

Bitte zuerst, falls noch nicht getan, die allgemeine Einleitung zur Office Automation lesen.

 

Das vollständige Codesample (Visual Studio 2005 Projekt) könnt ihr hier herunterladen:

ChrischSampleOutlookAddIn.zip

 

Dieser Artikel wurde auch bei Codeproject veröffentlich:
http://www.codeproject.com/useritems/OutlookContacts.asp

 

Im ersten Schritt wird, falls noch nicht vorhanden, der Command Bar Button erzeugt und danach mit einem Click Event Handler versehen:

 

Hier wird eine Collection der Command Bars des aktuellen Outlook Fensters geholt:

Office.CommandBars cmdBars = Application.ActiveExplorer().CommandBars;

 

Danach holen wir uns die „Standard“ Command Bar:

Office.CommandBar cmdBar = cmdBars["Standard"];

 

Jetzt versuchen wir einen eventuell bereits vorhandenen Button zu holen, falls dieser noch nicht existiert fangen wir die Exception ab und erzeugen einen neuen:

m_btnSampleAddin = (Office.CommandBarButton)cmdBar.Controls[SampleButtonTag];

 

if (m_btnSampleAddin == null)

{

m_btnSampleAddin = (Office.CommandBarButton)cmdBar.Controls.Add(

1, missing, missing, missing, missing);

 

m_btnSampleAddin.Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption;

m_btnSampleAddin.Caption = SampleButtonTag;

m_btnSampleAddin.Tag = SampleButtonTag;

}

 

 

In der Funktion welche beim Click Ereignis des Buttons aufgerufen wird zeigen wir den Standard Outlook Dialog zur Auswahl eines Ordners:

Outlook.MAPIFolder folder = Application.Session.PickFolder();

 

 

Wurde ein Ordner ausgewählt so ist „folder“ != null. In diesem Fall füttern wir unser Form mit diesem Ordner und zeigen es an.

 

In der Load Methode des Formulars gehen wir alle Items des gewählten Verzeichnisses durch:

foreach (object objItem in m_folder.Items)

 

Da dies nicht nur Kontakte, sondern ebenso Emails, Kalendereinträge oder anderes sein können behandeln wir dieses Item nur weiter wenn es sich um ein Contact Item handelt:

if (objItem is Outlook.ContactItem)

 

In diesem Fall füllen wir in die ListView ein neues Item für diesen Contact ein. Wichtig ist hier dass wir bei diesem ListViewItem als Tag den Outlook Contact setzen. So können wir später wieder darauf zugreifen:

Outlook.ContactItem contact = objItem as Outlook.ContactItem;

lvi.Tag = contact;

 

 

Später holen wir uns bei einem Doppelklick auf das ListView, falls ein Item selektiert ist, über den Tag wieder das Contact Item und zeigen den „Inspector“ davon an:

Outlook.ContactItem contact = lvi.Tag as Outlook.ContactItem;

contact.GetInspector.Display(Type.Missing);

 

 

Der Inspektor ist ein allgemeines Objekt von Outlook welches ein Item (Kontakte, Emails, etc.) in der gewohnten Outlook Form anzeigen kann.

 

Das war nun ein kurzer Ausflug in die Office Automation mit Outlook. Nun solltet ihr in der Lage sein einen Button in Outlook einzufügen, auf Klicks auf diesen zu reagieren und Outlook Items auszulesen.