次の方法で共有


Outlook PIA でのイベント

Outlook プライマリ相互運用機能アセンブリ (PIA) をブラウズすると、Outlook オブジェクト モデルで見慣れたオブジェクト名やイベント名に基づく名前のインターフェイスおよびイベント デリゲートが多数あることがわかります。 COM タイプ ライブラリのイベントとは異なり、Outlook PIA のイベントは同じオブジェクトのメソッドやプロパティと同じインターフェイスでは定義されません。 Outlook PIA のイベントをサポートするには、イベント関連のインターフェイス、デリゲート、およびシンク ヘルパー クラスをインポートするか作成します。 このトピックでは、これらのイベント関連のインターフェイス、デリゲート、およびシンク ヘルパー クラスについて説明します。

イベントのインターフェイス、デリゲート、シンク ヘルパー クラスの取得

Outlook は、Outlook PIA を作成するために .NET Framework のタイプ ライブラリ インポーター (TLBIMP) を使用して COM タイプ ライブラリのタイプの定義を共通言語ランタイム (CLR) アセンブリの同等の定義に変換します。 TLBIMP は、オブジェクトごとに次の 2 種類のインターフェイスをインポートします。

  • プライマリ インターフェイス (例: _Application インターフェイス)

  • イベント インターフェイス (例: ApplicationEvents_11 インターフェイス)

TLBIMP は、インポートしたインターフェイスを処理し, .NET インターフェイス (たとえば、Application インターフェイス) などの、いくつかのインターフェイス、デリゲート、およびクラスを作成します。 オブジェクトにイベントがある場合は、次のものが作成されます。

複数のバージョンのイベント

Outlook の複数のバージョンにわたって存在してきたオブジェクトの中には、バージョンによってイベントの実装が異なるものや、新しいバージョンがリリースされたときに追加的なイベントが増やされたものがあります。 Outlook では、複数のバージョンの間で変化するイベントに対応するために、その名前にバージョン番号を付加してイベント関連のインターフェイス、デリゲート、およびクラスを識別しています。 以下に例を示します。

  • Application オブジェクトに関してインポートされるイベント インターフェイス

    • Outlook 98 および Outlook 2000 用の最初のバージョン: ApplicationEvents インターフェイス

    • Outlook 2002 用のバージョン: ApplicationEvents_10 インターフェイス

    • Outlook 2003 以降のリリース用のバージョン: ApplicationEvents_11 インターフェイス

  • Application オブジェクトで TLBIMP が作成する .NET イベント インターフェイス

  • Application オブジェクトの各バージョンでイベントごとに TLBIMP が作成するデリゲート (例: ItemSend イベントの各バージョンのデリゲート)

新しいバージョンで追加されたイベントは、それ以前のバージョンではイベント インターフェイスに含まれず、対応するデリゲートもありません。 たとえば、AttachmentSelectionChange イベントは Outlook 2010 で Explorer オブジェクトに追加されたので、 Explorer オブジェクトの以前のイベント インターフェイスには含まれていません。

  • ExplorerEvents インターフェイス

  • ExplorerEvents_Event インターフェイス

一方、最新の .NET イベント インターフェイス、ExplorerEvents_10_Event、および Outlook 2010 バージョンのデリゲートExplorerEvents_10_AttachmentSelectionChangeEventHandlerでイベント 見つけることができます。

イベント インターフェイス、デリゲート、シンク ヘルパー クラスの目的

このセクションでは、Application オブジェクトを例として使用し、上記の各インターフェイスおよびクラスの内容を説明します。

  • プライマリ インターフェイス _Application では、 Application のすべてのメソッドとプロパティが定義されます。 後ほど説明する条件のとき以外は、通常、コード内でこのインターフェイスを使用することはありません。

  • TLBIMP がインポートするイベント インターフェイス ( ApplicationEvents_11、 ApplicationEvents_10 など) では、Outlook の対応するバージョンでの Application のイベントに対するメソッド マッピングが定義されます。 このインターフェイスをコードで使用することはありません。

  • TLBIMP が作成するイベント インターフェイス ( ApplicationEvents_11_Event、 ApplicationEvents_10_Event) では、Outlook の対応するバージョンでの Application のすべてのイベントが定義されます。 特定のバージョンのイベントのイベント ハンドラーを設計するときは、イベント ハンドラーをメソッドとして実装し、そのメソッドを, .NET イベント インターフェイスの対応するバージョンで定義されているイベントに接続します。 後ほど説明する条件のとき以外は、通常、コード内でこのイベント インターフェイスを参照することはありません。

  • .NET インターフェイス Application では、 _Application インターフェイスと ApplicationEvents_11_Event インターフェイスが継承されます。 通常、これはマネージ コードでオブジェクト、メソッド、プロパティ、および Application オブジェクトの最新のイベント メンバーにアクセスするとき使用するインターフェイスです。 ただし、次の 2 つのケースでは, .NET インターフェイスではなく、別のインターフェイスを使用してイベントに接続します。

    • アクセスするイベントの名前が、そのオブジェクトのメソッドと同じときは、適切なイベント インターフェイスにキャストしてイベントに接続します。 たとえば、Quit イベントに接続するには、 ApplicationEvents_11_Event インターフェイスにキャストします。

    • 以降の新しいバージョンの Outlook で拡張されたイベントの以前のバージョンに接続するときは、以前のインターフェイスのイベントのバージョンに接続します。 たとえば、最新バージョンの代わりに、Outlook 2002 用に実装された Application オブジェクトの Quit イベントのバージョンに接続するときは、 ApplicationEvents_11_Event インターフェイスで定義されている Quit イベントの代わりに、 ApplicationEvents_10_Event インターフェイスで定義されている Quit イベントに接続します。

  • デリゲートは、Outlook の特定のバージョンの特定のイベントのカスタム イベント ハンドラーを作成するためのフレームワークを提供します。 たとえば、Outlook アイテムの件名行の有無を送信直前にチェックする機能を追加するには、デリゲート ( ApplicationEvents_11_ItemSendEventHandler) と同じシグネチャを持つコールバック メソッドで、そのチェックを実装します。 次に、コールバック メソッドを、ApplicationEvents_11_Event インターフェイスで定義されている ItemSend イベントのイベント ハンドラーとしてフックします。 オブジェクトのイベント ハンドラーとしてのコールバック メソッドの接続に関する詳細については、「カスタム イベント ハンドラーに接続する」を参照してください。

  • TLBIMP によって作成されたシンク ヘルパー クラス (ApplicationEvents_11_SinkHelperや ApplicationEvents_10_SinkHelperなど) は、対応するバージョンの Outlook の Application イベントのイベント ヘルパー オブジェクトです。 これらのクラスはコードで使わないでください。

関連項目