Поделиться через


IMAPIContainer::SetSearchCriteria

Область применения: Outlook 2013 | Outlook 2016

Устанавливает условия поиска для контейнера.

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

Параметры

lpRestriction

[в] Указатель на структуру SRestriction , которая определяет условия поиска. Если в параметре lpRestriction передается значение NULL, то критерии поиска, которые использовались в последнее время для этого контейнера, будут использоваться снова. Значение NULL не должно передаваться в lpRestriction для первого поиска в контейнере.

lpContainerList

[в] Указатель на массив идентификаторов входа, представляющих контейнеры, которые будут включены в поиск. Если клиент передает значение NULL в параметре lpContainerList , идентификаторы записей, использовавшиеся в последнее время для поиска в этом контейнере, используются для нового поиска. Клиент не должен передавать null в lpContainerList для первого поиска в контейнере.

ulSearchFlags

[в] Битовая маска флагов, управляющая тем, как выполняется поиск. Можно задать следующие флаги:

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 устанавливает критерии поиска для контейнера, который поддерживает поиск( обычно это папка результатов поиска). Папка результатов поиска содержит ссылки на сообщения, соответствующие условиям поиска; фактические сообщения по-прежнему хранятся в исходном расположении. Единственными уникальными данными, содержащимися в папке результатов поиска, является ее таблица содержимого. Таблица содержимого папки результатов поиска содержит объединенное содержимое хранилища сообщений после применения ограничения поиска.

Операция поиска работает только в этой объединенной таблице содержимого; он не выполняет поиск по другим папкам результатов поиска. Результаты поиска возвращают только те сообщения, которые соответствуют условиям поиска; иерархия папок не возвращается.

Элемент управления возвращается клиенту после завершения поиска.

Примечания для исполнителей

Контейнеры адресных книг устанавливают критерии поиска, применяя ограничения к таблицам содержимого. Дополнительные сведения о критериях поиска и контейнерах адресной книги см. в разделе Реализация расширенного поиска.

Следует поддерживать операции открытия, копирования, перемещения и удаления сообщений в папках результатов поиска, а не в самой папке результатов поиска. Не разрешайте создавать сообщения в папке результатов поиска или копировать их в нее.

Примечания для вызывающих методов

Чтобы найти получателей сообщений, задайте для lpRestriction ограничение на подобъект с элементом ulSubObject в структуре SSubRestriction, для PR_MESSAGE_RECIPIENTS (PidTagMessageRecipients). Чтобы найти вложения, задайте для элемента ulSubObjectзначение PR_MESSAGE_ATTACHMENTS (PidTagMessageAttachments). Задайте элемент lpRes , чтобы указать на ограничение свойства, описывающее критерии поиска для получателей или вложений.

Например, чтобы найти вложения файлов с расширением MSS, задайте для параметра ulSubObjectзначение PR_MESSAGE_ATTACHMENTS , а lpRes — ограничение свойства, соответствующее PR_ATTACH_EXTENSION (PidTagAttachExtension) с mss.

Установка флага FOREGROUND_SEARCH в параметре ulSearchFlags может привести к снижению производительности системы.

SetSearchCriteria можно использовать для изменения условий поиска для уже выполняющегося поиска. Вы можете указать новые ограничения, новые списки папок для поиска и новый приоритет поиска, например обновление поиска до более высокого приоритета. Изменения в приоритете поиска не приводят к перезапуску существующего поиска, но другие изменения в критериях поиска могут быть.

Когда вы используете папку результатов поиска, вы можете либо удалить папку, либо позволить ей остаться открытой для последующего использования. Если удалить папку результатов поиска, удаляются только ссылки на сообщения. Фактические сообщения остаются в родительских папках.

Дополнительные сведения о папках результатов поиска см. в разделе Папки поиска MAPI.

Справочные материалы по MFCMAPI

Пример кода MFCMAPI указан в приведенной ниже таблице.

Файл Функция Comment
HierarchyTableDlg.cpp
CHierarchyTableDlg::OnEditSearchCriteria
MFCMAPI использует метод IMAPIContainer::SetSearchCriteria для записи условий поиска для папки после изменения пользователем.

См. также

IMAPIContainer::GetContentsTable

IMAPIContainer::OpenEntry

IMAPIFolder::CreateFolder

IMAPIFolder : IMAPIContainer

SPropertyRestriction

SRestriction

SSubRestriction

IMAPIContainer : IMAPIProp

Mfcmapi (en) � �������� ������� ����