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:
Die primäre Schnittstelle (zum Beispiel die _Application -Schnittstelle)
Die Ereignisschnittstelle (zum Beispiel die ApplicationEvents_11 -Schnittstelle)
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:
Die .NET-Ereignisschnittstelle (zum Beispiel die ApplicationEvents_11_Event -Schnittstelle)
Stellvertretung für jedes Ereignis (zum Beispiel die ApplicationEvents_11_ItemSendEventHandler -Stellvertretung)
Senkenhilfsklassen (zum Beispiel die ApplicationEvents_11_SinkHelper -Klasse)
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:
Die importierten Ereignisschnittstellen des Application-Objekts beinhalten:
Die erste Version für Outlook 98 und Outlook 2000: die ApplicationEvents -Schnittstelle
Die Version für Outlook 2002: die ApplicationEvents_10 -Schnittstelle
Die Version für Outlook 2003 und spätere Versionen: die ApplicationEvents_11 -Schnittstelle
Die .NET-Ereignisschnittstellen vom TLBIMP für das Application-Objekt beinhalten:
Die erste Version für Outlook 98 und Outlook 2000: die ApplicationEvents_Event -Schnittstelle
Die Version für Outlook 2002: die ApplicationEvents_10_Event -Schnittstelle
Die Version für Outlook 2003 und spätere Versionen: die ApplicationEvents_11_Event -Schnittstelle
Die Stellvertretungen, die TLBIMP für jedes Ereignis in jeder Version des Application-Objekts erstellt hat. Zum Beispiel: eine Stellvertretung für jede Version des ItemSend-Ereignisses:
Die erste Version für Outlook 98 und Outlook 2000: die ApplicationEvents_ItemSendEventHandler -Stellvertretung
Die Version für Outlook 2002: die ApplicationEvents_10_ItemSendEventHandler -Stellvertretung
Die Version für Outlook 2003 und spätere Versionen: die ApplicationEvents_11_ItemSendEventHandler -Stellvertretung
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.