次の方法で共有


アドレス帳のコンテナーを開く

適用対象: Outlook 2013 | Outlook 2016

MAPI 統合アドレス帳を開いた後、1 つ以上のアドレス帳コンテナーを開いて、その中の受信者にアクセスします。

アドレス帳の最上位コンテナーを開くには、NULL エントリ識別子を使用して IAddrBook::OpenEntry を呼び出します。

アドレス帳コンテナーは、読み取り専用または読み取り/書き込みアクセスで実装できます。 読み取り専用コンテナーは、参照にのみ使用されます。 読み取り/書き込みコンテナーを変更できるため、クライアントは新しいエントリを作成したり、既存のエントリを削除したり変更したりできます。 すべての個人用アドレス帳 (PAB) コンテナーは、読み取り/書き込みコンテナーとして実装されます。

下位レベルのコンテナーを開くには、 OpenEntry を呼び出し、開くコンテナーのエントリ識別子を指定します。

PAB として指定されたコンテナーを開きます

  1. IAddrBook::GetPAB を呼び出して、PAB のエントリ識別子を取得します。

  2. このエントリ識別子を IAddrBook::OpenEntry に渡します。

PAB ではないコンテナーを開く

  1. アドレス帳のルート コンテナーを開くには、NULL エントリ識別子を使用して IAddrBook::OpenEntry を呼び出します。

  2. ルート コンテナーの IMAPIContainer::GetHierarchyTable メソッドを呼び出して、その階層テーブル (アドレス帳内のすべての最上位コンテナーの一覧) を取得します。

  3. 開くコンテナーが特定の種類の場合:

    • プロパティ タグのPR_DISPLAY_TYPE (PidTagDisplayType)、プロパティ値のコンテナーの型、および関係のRELOP_EQを使用して、SPropertyRestriction 構造体を作成します。 PR_DISPLAY_TYPE は、次のような多くの値に設定できます。

    • 階層テーブルをグローバル アドレス一覧に属するコンテナーに制限するDT_GLOBAL。

    • テーブルをローカル アドレス帳に属するコンテナーに制限するDT_LOCAL。

    • テーブルを変更可能なコンテナーに制限するDT_MODIFIABLE。

    • PR_ENTRYIDPR_DISPLAY_TYPE、およびその他の目的の列を含む SPropTagArray 構造体を作成します。

    • HrQueryAllRows を呼び出し、プロパティ制限とプロパティ タグ配列を渡します。 HrQueryAllRows は、指定した型に属するすべてのコンテナーに対して 1 行ずつ、0 行以上の行を返します。 任意の数の行の戻り値を処理するように準備してください。

    • 目的のコンテナーを表す行のPR_ENTRYID列からのエントリ識別子を使用して、IAddrBook::OpenEntry を呼び出します。

  4. 開くコンテナーが特定のアドレス帳プロバイダーに属している場合:

    • プロパティ タグのPR_AB_PROVIDERS (PidTagAbProviders)、プロパティ値のプロバイダー固有の値、および関係のRELOP_EQを使用して、SPropertyRestriction 構造体を作成します。 通常、プロバイダー固有の値はグローバルに一意の識別子または GUID です。 この値は、アドレス帳プロバイダーのヘッダー ファイルのいずれかで発行されます。

    • PR_ENTRYID (PidTagEntryId)、PR_AB_PROVIDERS、およびその他の目的の列を含む SPropTagArray 構造体を作成します。

    • HrQueryAllRows を呼び出し、プロパティ制限とプロパティ タグ配列を渡します。 指定したアドレス帳プロバイダーがプロファイルにない場合、HrQueryAllRows は 0 行を返します。 プロバイダーの編成方法に応じて、プロバイダーの最上位コンテナーの 1 つ以上の行を返すことができます。

    • 目的のコンテナーを表す行のPR_ENTRYID列からのエントリ識別子を使用して、IAddrBook::OpenEntry を呼び出します。 関心のあるコンテナーが最上位のコンテナーでない場合は、最上位のコンテナーを見つけて階層を走査します。