Ereignisse in der Outlook-PIA

Wenn Sie die primäre Interopassembly (PIA) von Outlook durchsuchen, werden Sie bemerken, dass viele Schnittstellen- und Ereignisstellvertretungen nach aus dem Outlook-Objektmodell bekannten Objekt- und Ereignisnamen benannt sind. Anders als Ereignisse in der COM-Typbibliothek werden Ereignisse in der Outlook-PIA nicht in der gleichen Schnittstelle wie Methoden oder Eigenschaften des gleichen Objekts definiert. Ereignisabhängige Schnittstellen, Stellvertretungen und Senkenhilfsklassen werden entweder importiert oder erstellt, um Ereignisse in der Outlook-PIA zu unterstützen. Dieses Thema beschreibt die ereignisabhängigen Schnittstellen, Stellvertretungen und Senkenhilfsklassen.

Herkunft der ereignisabhängigen Schnittstellen, Stellvertretungen und Senkenhilfsklassen

Beim Erstellen der Outlook-PIA verwendet Outlook das Type Library Importer-Tool (TLBIMP) von .NET Framework, um die Typdefinitionen der COM-Typbibliothek in entsprechende Definitionen einer Common Language Runtime-Assemby (CLR) zu konvertieren. TLBIMP importiert die folgenden beiden Typen von Schnittstellen für jedes Objekt:

TLBIMP verarbeitet die importierten Schnittstellen und erstellt eine Anzahl von Schnittstellen, Stellvertretungen und Klassen, einschließlich der .NET-Schnittstelle (zum Beispiel die Application -Schnittstelle). Verfügt das Objekt über Ereignisse, werden die folgenden erstellt:

Mehrere Versionen von Ereignissen

Einige Objekte für mehrere verschiedene Versionen von Outlook verfügen über unterschiedliche Implementierungen von Ereignissen (je nach Version) und über zusätzliche Ereignisse, die hinzugefügt wurden, als neue Versionen veröffentlicht wurden. Um diese Ereignisse zu unterstützen, die über verschieden Versionen variieren, kennzeichnet Outlook diese ereignisabhängigen Schnittstellen, Stellvertretungen und Klassen, indem die Versionsnummer zum Namen hinzugefügt wird. Beispiel:

Logischerweise werden Ereignisse, die in einer späteren Version hinzugefügt wurden, nicht in Ereignisschnittstellen früherer Version angezeigt und verfügen dort auch nicht über entsprechende Stellvertretungen. Wenn das AttachmentSelectionChange-Ereignis beispielsweise zum Explorer-Objekt in Outlook 2010, hinzugefügt wurde, ist es nicht Bestandteil dieser früheren Ereignisschnittstellen für das Explorer-Objekt:

  • ExplorerEvents-Schnittstelle

  • ExplorerEvents_Event-Schnittstelle

Auf der anderen Seite finden Sie das Ereignis in der neuesten .NET-Ereignisschnittstelle, ExplorerEvents_10_Event, und seinen Delegaten für die Outlook 2010-Version , ExplorerEvents_10_AttachmentSelectionChangeEventHandler.

Zweck der Ereignisschnittstellen, Stellvertretungen und Senkenhilfsklassen

In diesem Abschnitt wird unter Verwendung des Application-Objekts beschrieben, was die einzelnen oben aufgeführten Schnittstellen und Klassen enthalten:

  • Die primäre Schnittstelle, _Application, definiert alle Methoden und Eigenschaften von Application. Bis auf die unten beschriebene Ausnahme wird diese Schnittstelle normalerweise für Code nicht verwendet.

  • Die Ereignisschnittstellen, die durch TLBIMP importiert wurden, wie ApplicationEvents_11 und ApplicationEvents_10, definieren Methoden, die Ereignisse von Application in der entsprechenden Version von Outlook zuordnen. Sie verwenden diese Schnittstelle nicht in Code.

  • Die Ereignisschnittstellen von TLBIMP wie ApplicationEvents_11_Event und ApplicationEvents_10_Event definieren alle Ereignisse in Application in der entsprechenden Version von Outlook. Beim Entwerfen eines Ereignishandlers für Ereignisse in einer bestimmten Version implementieren Sie den Ereignishandler als Methode und verbinden die Methode mit dem Ereignis, das in der entsprechenden Version der .NET-Ereignisschnittstelle definiert wurde. Bis auf die unten beschriebene Ausnahme verweisen Sie nicht auf die Ereignisschnittstelle im Code.

  • Die .NET-Schnittstelle, Application, vererbt die _Application-Schnittstelle und die ApplicationEvents_11_Event-Schnittstelle. Diese Schnittstelle wird üblicherweise im verwalteten Code verwendet, um auf das Objekt, die Methode, die Eigenschaft und die aktuellen Ereignismitglieder des Application-Objekts zuzugreifen. Es gibt allerdings zwei Ausnahmen, in denen Sie nicht die .NET-Schnittstelle, sondern eine andere Schnittstelle verwenden, um sich mit einem Ereignis zu verbinden:

    • Wenn Sie auf ein Ereignis zugreifen, das denselben Namen wie eine Methode des Objekts verwendet, wechseln Sie zur entsprechenden Ereignisschnittstelle, um sich mit dem Ereignis zu verbinden. Zum Verbinden mit dem Quit -Ereignis, wechseln Sie beispielsweise zur ApplicationEvents_11_Event-Schnittstelle.

    • Wenn Sie sich mit einer früheren Version eines Ereignisses verbinden, das mittlerweile in einer späteren Version von Outlook erweitert wurde, verbindne Sie sich mit der früheren Version des Ereignisses. Wenn Sie sich beispielsweise mit der Version des Quit-Ereignisses des Application-Objekts verbinden möchten, das für Outlook 2002 anstelle der aktuellen Version implementiert wurde, verbinden Sie sich mit dem Quit -Ereignis, das in der ApplicationEvents_10_Event-Schnittstelle definiert wurde, anstatt sich mit dem Quit-Ereignis zu verbinden, das in der ApplicationEvents_11_Event-Schnittstelle definiert wurde.

  • Stellvertretungen stellen ein Framework für das Erstellen von benutzerdefinierten Ereignishandlern für bestimmte Ereignisse in bestimmten Versionen von Outlook bereit. Wenn Sie beispielsweise eine Überprüfung des Vorhandenseins von Betreffzeilen in Outlook-Elementen, bevor diese gesendet werden, hinzufügen möchten, implementieren Sie diese Überprüfung in einer Rückrufmethode mit derselben Signatur wie die Stellvertretung, ApplicationEvents_11_ItemSendEventHandler. Anschließend verbinden Sie die Rückrufmethode als Ereignishandler für das ItemSend-Ereignis, das in der ApplicationEvents_11_Event-Schnittstelle definiert ist. Weitere Informationen über das Verbinden von Rückrufmethoden als Ereignishandler für ein Objekt finden Sie unter Verbinden mit benutzerdefinierten Ereignishandlern.

  • Die von TLBIMP erstellten Senkenhilfsklassen, z. B. ApplicationEvents_11_SinkHelper und ApplicationEvents_10_SinkHelper, sind Ereignishilfsobjekte für Application-Ereignisse in der entsprechenden Version von Outlook. Verwenden Sie diese Klassen nicht im Code.

Siehe auch