アドレス帳エントリのコピー

適用対象: Outlook 2013 | Outlook 2016

コンテナーの IABContainer::CopyEntries メソッドは、同じコンテナーまたは別のコンテナーの 1 つ以上の受信者がこのコンテナーにコピーされるときに呼び出されます。 CopyEntries には、コピーする受信者を表すエントリ識別子の配列、進行状況インジケーターのウィンドウ ハンドル、進行状況オブジェクト ポインター、フラグ値の 4 つの入力パラメーターがあります。 プロバイダーは、AB_NO_DIALOG フラグが設定されていない場合は進行状況を表示し、null でない場合は lpProgress パラメーターの progress オブジェクトを使用する必要があります。 lpProgress が NULL の場合は、IMAPISupport::D oProgressDialog を呼び出して MAPI 進行状況オブジェクトを使用します。 進行状況の表示の詳細については、「 進行状況インジケーターの表示」を参照してください。

進行状況インジケーターを抑制するAB_NO_DIALOGに加えて、他の 2 つのフラグの 1 つを設定して、CREATE_CHECK_DUP_LOOSEまたはCREATE_CHECK_DUP_STRICTの重複エントリ チェックの種類を要求できます。 CREATE_CHECK_DUP_LOOSEフラグとCREATE_CHECK_DUP_STRICTフラグは、プロバイダーが重複するエントリを決定し、無視する方法についての提案にすぎません。 MAPI は、プロバイダーが次のようにこれらのフラグのサポートを実装することを提案します。

重複エントリ フラグ 推奨される実装
CREATE_CHECK_DUP_LOOSE
作成するエントリの表示名が、コンテナー内のエントリの表示名と一致するかどうかを確認します。
CREATE_CHECK_DUP_STRICT
作成するエントリの表示名と検索キーの両方が、コンテナー エントリの表示名と検索キーと一致するかどうかを確認します。

最後のフラグCREATE_REPLACEは、プロバイダーが作成するエントリがコンテナー内のエントリの複製であると判断した場合、新しいエントリが既存のエントリを置き換える必要があることを示します。

プロバイダーが個人用アドレス帳の場合は、コピー操作ごとに PR_DETAILS_TABLE (PidTagDetailsTable) プロパティを含めます。 コピーした受信者の詳細表示テーブルを含めると、元のコンテナーを呼び出して表示を作成するのではなく、コンテナーで受信者の詳細を表示できます。

IABContainer::CopyEntries を実装するには

  1. lpEntries パラメーターの各エントリ識別子がプロバイダーが処理する形式であるかどうかを判断し、そうでない場合は失敗し、MAPI_E_INVALID_ENTRYIDを返します。

  2. エントリ識別子が、プロバイダーが処理するメッセージング ユーザー、配布リスト、またはコンテナーを表す場合:

  3. IMAPISupport::OpenEntry メソッドを呼び出して、対応する受信者を開きます。

  4. 受信者をコンテナーにコピーします。

  5. エントリ識別子が外部受信者を表す場合:

  6. コンテナーの IABContainer::CreateEntry メソッドを呼び出して、新しい受信者を作成します。

  7. 新しい受信者に初期プロパティを設定します。

  8. 新しいオブジェクトの IMAPIProp::SaveChanges メソッドを呼び出して保存します。

  9. コンテナーのコンテンツ テーブルを更新して、新しい受信者を反映します。

  10. IMAPISupport::Notify を呼び出して、登録済みクライアントにテーブル通知を送信します。