Session D-OUT

VFP und Outlook 2000

Norbert Abb
Wizards & Builders GmbH


Einleitung

Outlook hat sich als Nachfolger der ersten Mail und Termin Tools (MS Mail und Schedule) mittlerweile etabliert als ein sogenannter PIM (Personal Information Manager). Die Session zeigt wie man mit VFP Outlook ansteuern kann.

Das Objektmodell von Outlook wird erläutert. Es wird am Beispiel gezeigt wie auf die Komponenten von Outlook zugegriffen werden kann und die Daten bearbeitet werden können.

Überblick

ActiveX Controls

Die mit VFP gelieferten ActiveX Controls um die MAPI Schnittstelle (E-Mail) anzusprechen werden vorgestellt und es wird am Beispiel gezeigt, wie man damit arbeiten kann.

Outlook

Die Applikation Outlook wird vorgestellt und die interaktiven Funktionen des Programms gezeigt um zu verdeutlichen welche Funktionen später angesprochen werden sollen.

Objektmodell

Das Objektmodell von Outlook wird erläutert. Diese Modell ist zwar einfacher als das anderer Office Applikationen, aber ohne Kenntnisse über den Aufbau der Objektstruktur kann man mit OLE Automation nicht arbeiten.

Neues in Outlook 2000

Die Neuen Möglichkeiten von Outlook 2000 werden vorgestellt und erläutert.

Zugriff auf Outlook

Der Zugriff auf Outlook wird an mehreren Beispielen gezeigt.

ActiveX Controls

Seit VFP 3.0 werden zwei OLE Container Controls ausgeliefert, die die MAPI Funktionen auf Masken von VFP bringen. Die Controls sind unter Windows 95 und Windows NT einsetzbar. Die Controls stellen Eigenschaften und Methoden zur Verfügung um MAPI Funktionen anzusprechen. Das heißt es können E-Mails empfangen und gesendet werden.

Session Control

Mit dem Session Control wird eine Mail Session verwaltet. Eine Session wird mit der SignOn Methode des Session Controls eröffnet. Die Eigenschaften dieses Controls steuern die Art wie das Login zu der Session geschehen soll:

Achtung!: Der Defaultwert für diese Eigenschaft ist .T. . Das heißt es werden alle definierten Verbindungen kontaktiert wenn die Session gestartet wird.

Das Control dient nur zum Eröffnen und Schließen einer Session. Wichtig ist die SessionID die von der SignOn Methode zurückgeliefert/gesetzt wird. Diese ID wird benötigt um mit dem Message Control auf die Nachrichten zugreifen zu können.

Zum Schließen einer Mail Session wird die SignOff Methode ausgeführt.

Message Control

Das Message Control dient der Verwaltung von Messages. Die Steuerung des Controls geschieht über Eigenschaften des Objekts. Die meisten Eigenschaften sind zur Designzeit nicht verfügbar, da sie Eigenschaften von Messages enthalten und diese beim Design noch nicht vorhanden sind.

Die Verbindung zur Session geschieht über die SessionID. Es muß also um mit diesem Control arbeiten zu können zuerst die SessionID von der Session (Session OCX) übertragen werden.

Lesen von Nachrichten

Um Messages in den Puffer des Controls zu laden, wird die fetch() Methode ausgeführt. Danach stehen alle Messages zur Verfügung und können durch Verändern der MsgIndex Eigenschaft durchgeblättert werden. Die Anzahl der Messages steht in MsgCount. Vorsicht!: Der MsgIndex beginnt bei 0 und geht daher nur bis MsgCount -1.

Als weitere steuernde Eigenschaften können FetchSorted und FetchUnreadOnly verwendet werden. Mit FetchUnreadOnly = .T. werden nur Messages geholt, die noch nicht gelesen wurden. Mit FetchSorted = .T. werden die Nachrichten in Eingangsreihenfolge gelesen. Mit FetchSorted = .F. werden die Nachrichten in derselben Reihenfolge gelesen, wie sie in der InBox des Benutzers auftauchen würden.

Weitere Eigenschaften:

Achtung!: beim ‘normalen’ Einlesen von Mails ist die Nachricht mit MsgIndex = 0 die älteste Mail!

Versenden von Nachrichten

Eine neue Nachricht wird angelegt durch den Aufruf der Methode Compose(). Alternativ kann der MsgIndex auf -1 gesetzt werden. Es werden dabei alle Nachrichten Eigenschaften leer angelegt und können danach gefüllt werden. Die Nachricht kann zusammengestellt werden mit den Empfängern, dem Betreff, dem Nachrichtentext und eventuell mit Anlagen. Versandt wird die Nachricht erst, wenn die Methode Send() aufgerufen wird.

OLE Automation

OLE Automation bedeutet quasi eine ‚Fernsteuerung‘ einer anderen Applikation. Es gibt dabei immer einen Client und einen Server. Die steuernde Komponente wird Client und die angesteuerte Applikation Server genannt. VFP ist also in den folgenden Erläuterungen als der Client zu sehen und Outlook als der Server.

Um mit OLE Automation arbeiten zu können spricht man die gesteuerte Applikation als COM Objekt an:

Es wird von VFP aus ein Objekt erstellt, das dann als (Objekt)Referenzen jeweils ein Objekt mit möglicherweise weiteren Objektstrukturen und Collections in darunterliegenden Ebenen enthält.

Wenn man am Ersten experimentieren mit Automation oder mit einem einem neuen COM Objket ist, so kann man dies sehr bequem vom VFP Command Fenster aus tun. Ungünstig dabei ist allerdings, daß man im VFP Debugger Eigenschaften von COM Objekten erst zu sehen bekommt, wenn man sie angesprochen hat (also muß man die Namen kennen).

Outlook

Outlook wird als Bestandteil des Office Paketes ausgeliefert oder kann separat als Client für den Exchange Server erworben und verteilt werden.

Outlook ist ein ‚Personal Information Manager‘ (PIM) mit E-Mail Funktionalität. Das bedeutet es kann ein (oder mehrere) Terminkalender geführt werden. Man kann seine Aufgaben verwalten, sich an bestimmte Aufgaben und Termine erinnern lassen und seine Kontakte (Adresse, Telefonnummern, E-Mails) verwalten. Es gibt außerdem noch die Möglichkeit Notizen zu verwalten sowie bestimmte Aktionen mitzuprotokollieren (Zeitpunkt und Dauer).

In Outlook werden für den E-Mail Teil die Informationen welche (Mail) Dienste angesprochen werden sollen in Profiles verwaltet. Beispiele für Dienste sind: Exchange Server, Internet Mail, Fax, Compuserve Mail etc. Es ist also möglich mehrere E-Mail Accounts (gleicher oder unterschiedlicher Art) innerhalb des Outlook Clients zu verwalten.

Innerhalb von Outlook werden die Daten in Foldern gehalten und verwaltet. Diese Folder sind zum Teil schon aus Exchange (oder Mail) bekannt, wie Posteingang und –ausgang. Aber auch die Informationen zur Terminplanung (Kalender, Aufgaben) sowie Notizen sind in solchen Foldern gespeichert.

Ein interessanter Folder ist der Folder ‚Journal‘. Dort können automatisch Zeiten mitprotokolliert werden die für verschiedene Office Dokumente benötigt wurden. Es können aber auch Einträge manuell (oder per OLE Automation) erstellt werden.

Objektmodell

Um mit OLE Automation arbeiten zu könne muß man die Objektstruktur des erstellten Objektes kennen. Informationen zu den Objektmodellen findet man in der Dokumention zu den Anwendungen. Bei den Office Anwendungen sind dies die *.CHM Dateien im Office Verzeichnis. In diesen Hilfedateien findet man auch aufbereitete Objektmodelle.


 


Man sieht an dem Modell, daß der Zugriff auf die genannten Outlook Folder nur über ein Namespace Objekt möglich ist. Diese Name Space Objekt erhält man, wenn man vom Outlook Objekt die getnamespace Methode mit dem Parameter “MAPI” aufruft (dies ist derzeit der einzige verfügbare NameSpace).

Neues in Outlook 2000

In Outlook 2000 wurden auch für den Anwender einige Neuerungen und Verbesserungen eingebracht. Für diesen Vortrag interessieren aber vor allem die Erweiterungen und Neuerungen, die Programmierer betreffen.

Das Objektmodell von Outlook wurde immer wieder erweitert und ergänzt. So war es unter Outlook 98 zum Beispiel zum ersten Mal möglich per Automation auf das Adreßbuch zuzugreifen. Allerdings waren auch unter Outlook 98 noch nicht alle Objekte im COM Objekt verfügbar. Außer den Erweiterungen im Objektmodell hat nun auch Outlook VBA als Programmiersprache bekommen und damit die gleiche Möglichkeit zur Programmierung wie alle anderen Office Applikationen.

Die wichtigsten neuen Objekte sind:

Außerdem ist es nun möglich mit selbst definierten Property Seiten zu arbeiten. Der Zugriff auf die Fenster (Explorer, Inspector) ist nun über eine Collection möglich, es kann nicht mehr nur das aktive Fenster angesprochen werden.

Neue Properties sind für die Ansteuerung der Bedieneroberfläche hinzugekommen, so ist der Titel bei den Outlook Fenster Objekten (Explorer und Inspector) zugänglich, Außerdem kann die Größe und die Position der Fenster als Eigenschaft angesprochen und gesetzt werden.

Es sind weiterhin noch einige Events in das Objektmodell aufgenommen worden, so daß nun mehr Möglichkeiten für den Programmierer bestehen auf Ereignisse des Benutzers innerhalb von Outlook zu reagieren.

Als Zusammenfassung der Neuerungen kann man feststellen: Die Erweiterungen betreffen hauptsächlich die Ansteuerung von verschiedenen ‚sichtbaren‘ Objekte von Outlook, die vorher nicht möglich waren. Vorher war hauptsächlich ein Zugriff auf die ‚internen‘ Objekte von Outlook möglich.

Durch die Möglichkeit auf Ereignisse zu reagieren ist es auch möglich Funktionen in Outlook einzubinden und nicht nur Outlook ‚fernzusteuern‘.

Zugriff auf Outlook

Ein ‘Outlook Objekt’ wird in VFP erstellt durch den Befehl:

 oOutlook = createobject(”Outlook.Application”) 

Anschließend kann man mit dieser Objektreferenz in VFP arbeiten.

Um mit Elementen von Outlook zu arbeiten, benötigt man das NameSpace Objekt. Wenn aber einfach nur Elemente (E-Mails, Termine, Aufgaben etc.) zu Outlook hinzugefügt werden sollen kann dies einfach über die Methode createitem mit dem entsprechenden Item Typ geschehen. - Die Typen (und andere Konstanten) findet man in der Hilfe Datei. – Die Methode gibt ein Objekt des gewünschten Typs zurück. Anschließend können die Eigenschaften des Objektes gesetzt werden (z.B. Absender, Adressat, Text) und das Objekt dann verschickt (send) oder gespeichert werden.

Um mit Outlook umzugehen ist die Hilfedatei (MSOUTL9.CHM) wichtig, da sie das Objektmodell (s.o.) enthält.