IMAPIContainer::SetSearchCriteria

適用対象: Outlook 2013 | Outlook 2016

コンテナーの検索条件を確立します。

HRESULT SetSearchCriteria(
  LPSRestriction lpRestriction,
  LPENTRYLIST lpContainerList,
  ULONG ulSearchFlags
);

パラメーター

lpRestriction

[in]検索条件を定義する SRestriction 構造体へのポインター。 lpRestriction パラメーターに NULL が渡された場合、このコンテナーで最後に使用された検索条件が再び使用されます。 コンテナー内の最初の検索に対して 、lpRestriction に NULL を渡さないでください。

lpContainerList

[in]検索に含めるコンテナーを表すエントリ識別子の配列へのポインター。 クライアントが lpContainerList パラメーターに NULL を渡した場合、このコンテナーを検索するために最近使用されたエントリ識別子が新しい検索に使用されます。 クライアントは、コンテナー内の最初の検索に 対して lpContainerList に NULL を渡さないでください。

ulSearchFlags

[in]検索の実行方法を制御するフラグのビットマスク。 次のフラグを設定できます。

BACKGROUND_SEARCH

検索は、他の検索に対して通常の優先順位で実行する必要があります。 このフラグは、FOREGROUND_SEARCH フラグと同時に設定することはできません。

FOREGROUND_SEARCH

検索は、他の検索に対して高い優先度で実行する必要があります。 このフラグは、BACKGROUND_SEARCH フラグと同時に設定することはできません。

NON_CONTENT_INDEXED_SEARCH

検索では、一致するエントリを検索するためにコンテンツ インデックス作成を使用しないでください。 このフラグは Exchange ストアでのみ有効です。

RECURSIVE_SEARCH

検索には、 lpContainerList パラメーターで指定されたコンテナーとそのすべての子コンテナーが含まれている必要があります。 このフラグは、SHALLOW_SEARCH フラグと同時に設定することはできません。

RESTART_SEARCH

これが SetSearchCriteria の最初の呼び出しである場合は検索を開始するか、検索が非アクティブな場合は再起動する必要があります。 このフラグは、STOP_SEARCH フラグと同時に設定することはできません。

SHALLOW_SEARCH

検索は、一致するエントリの lpContainerList パラメーターで指定されたコンテナーでのみ検索する必要があります。 このフラグは、RECURSIVE_SEARCH フラグと同時に設定することはできません。

STOP_SEARCH

検索を停止する必要があります。 このフラグは、RESTART_SEARCH フラグと同時に設定することはできません。

戻り値

S_OK

検索条件が正常に設定されました。

MAPI_E_TOO_COMPLEX

サービス プロバイダーは、指定された検索条件をサポートしていません。

注釈

IMAPIContainer::SetSearchCriteria メソッドは、検索をサポートするコンテナー (通常は検索結果フォルダー) の検索条件を確立します。 検索結果フォルダーには、検索条件を満たすメッセージへのリンクが含まれています。実際のメッセージは元の場所に保存されます。 検索結果フォルダーに含まれる一意のデータは、そのコンテンツ テーブルだけです。 検索制限が適用された後、検索結果フォルダーの目次にメッセージ ストアの内容がマージされます。

検索操作は、このマージされたコンテンツ テーブルでのみ機能します。他の検索結果フォルダーは検索されません。 検索結果は、検索条件に一致するメッセージのみを返します。フォルダー階層は返されません。

検索が完了すると、コントロールがクライアントに返されます。

実装に関するメモ

アドレス帳コンテナーは、コンテンツ テーブルに制限を適用することで検索条件を確立します。 検索条件とアドレス帳コンテナーの詳細については、「 高度な検索の実装」を参照してください。

検索結果フォルダー自体ではなく、検索結果フォルダー内のメッセージに対して、開く、コピー、移動、削除する操作をサポートする必要があります。 検索結果フォルダー内にメッセージを作成したり、検索結果フォルダーにコピーしたりすることはできません。

呼び出し側への注意

メッセージ受信者を検索するには、sSubRestriction 構造体の ulSubObject メンバーが PR_MESSAGE_RECIPIENTS (PidTagMessageRecipients) に設定されているサブオブジェクト制限を指すように lpRestriction を設定します。 添付ファイルを検索するには、 ulSubObject メンバーを PR_MESSAGE_ATTACHMENTS (PidTagMessageAttachments) に設定します。 lpRes メンバーを設定して、受信者または添付ファイルの検索条件を説明するプロパティ制限をポイントします。

たとえば、拡張子が .mss の添付ファイルを探すには、 ulSubObjectPR_MESSAGE_ATTACHMENTS に設定し、 lpRes を.mss と PR_ATTACH_EXTENSION (PidTagAttachExtension) と一致するプロパティ制限に設定します。

ulSearchFlags パラメーターで FOREGROUND_SEARCH フラグを設定すると、システム パフォーマンスが低下する可能性があります。

SetSearchCriteria を使用して、既に進行中の検索の検索条件を変更できます。 新しい制限、検索するフォルダーの新しいリスト、新しい検索の優先順位 (より高い優先順位への検索のアップグレードなど) を指定できます。 検索の優先順位を変更しても、既存の検索は再開されませんが、検索条件に対するその他の変更は可能です。

検索結果フォルダーを使用している場合は、フォルダーを削除するか、後で使用できるように開いたままにすることができます。 検索結果フォルダーを削除すると、メッセージ リンクのみが削除されます。 実際のメッセージは親フォルダーに残ります。

検索結果フォルダーの詳細については、「 MAPI 検索フォルダー」を参照してください。

MFCMAPI リファレンス

MFCMAPI のサンプル コードについては、次の表を参照してください。

ファイル 関数 コメント
HierarchyTableDlg.cpp
CHierarchyTableDlg::OnEditSearchCriteria
MFCMAPI では、 IMAPIContainer::SetSearchCriteria メソッドを使用して、ユーザーが編集した後でフォルダーの検索条件を記述します。

関連項目

IMAPIContainer::GetContentsTable

IMAPIContainer::OpenEntry

IMAPIFolder::CreateFolder

IMAPIFolder : IMAPIContainer

SPropertyRestriction

SRestriction

SSubRestriction

IMAPIContainer : IMAPIProp

[�R��h �T���v���Ƃ��� MFCMAPI