IMAPIContainer::SetSearchCriteria
Hace referencia a: Outlook 2013 | Outlook 2016
Establece criterios de búsqueda para el contenedor.
HRESULT SetSearchCriteria(
LPSRestriction lpRestriction,
LPENTRYLIST lpContainerList,
ULONG ulSearchFlags
);
Parameters
lpRestriction
[in] Puntero a una estructura SRestriction que define los criterios de búsqueda. Si se pasa NULL en el parámetro lpRestriction , se vuelven a usar los criterios de búsqueda que se usaron más recientemente para este contenedor. NO se debe pasar NULL en lpRestriction para la primera búsqueda en un contenedor.
lpContainerList
[in] Puntero a una matriz de identificadores de entrada que representan los contenedores que se incluirán en la búsqueda. Si un cliente pasa NULL en el parámetro lpContainerList , los identificadores de entrada usados más recientemente para buscar en este contenedor se usan para la nueva búsqueda. Un cliente no debe pasar NULL en lpContainerList para la primera búsqueda en un contenedor.
ulSearchFlags
[in] Máscara de bits de marcas que controlan cómo se realiza la búsqueda. Se pueden establecer las siguientes marcas:
BACKGROUND_SEARCH
La búsqueda debe ejecutarse con prioridad normal en relación con otras búsquedas. Esta marca no se puede establecer al mismo tiempo que la marca de FOREGROUND_SEARCH.
FOREGROUND_SEARCH
La búsqueda debe ejecutarse con prioridad alta en relación con otras búsquedas. Esta marca no se puede establecer al mismo tiempo que la marca de BACKGROUND_SEARCH.
NON_CONTENT_INDEXED_SEARCH
La búsqueda no debe usar la indexación de contenido para buscar entradas coincidentes. Esta marca solo es válida para los almacenes de Exchange.
RECURSIVE_SEARCH
La búsqueda debe incluir los contenedores especificados en el parámetro lpContainerList y todos sus contenedores secundarios. Esta marca no se puede establecer al mismo tiempo que la marca de SHALLOW_SEARCH.
RESTART_SEARCH
La búsqueda debe iniciarse si se trata de la primera llamada a SetSearchCriteria o reiniciarse si la búsqueda está inactiva. Esta marca no se puede establecer al mismo tiempo que la marca de STOP_SEARCH.
SHALLOW_SEARCH
La búsqueda solo debe buscar en los contenedores especificados en el parámetro lpContainerList para las entradas coincidentes. Esta marca no se puede establecer al mismo tiempo que la marca de RECURSIVE_SEARCH.
STOP_SEARCH
Se debe detener la búsqueda. Esta marca no se puede establecer al mismo tiempo que la marca de RESTART_SEARCH.
Valor devuelto
S_OK
Los criterios de búsqueda se establecieron correctamente.
MAPI_E_TOO_COMPLEX
El proveedor de servicios no admite los criterios de búsqueda especificados.
Comentarios
El método IMAPIContainer::SetSearchCriteria establece criterios de búsqueda para un contenedor que admite búsquedas, normalmente una carpeta search-results. Una carpeta de resultados de búsqueda contiene vínculos a los mensajes que cumplen los criterios de búsqueda; los mensajes reales siguen almacenados en sus ubicaciones originales. Los únicos datos únicos contenidos en una carpeta de resultados de búsqueda son su tabla de contenido. La tabla de contenido de una carpeta de resultados de búsqueda tiene el contenido combinado del almacén de mensajes después de aplicar la restricción de búsqueda.
Una operación de búsqueda solo funciona en esta tabla de contenido combinada; no busca en otras carpetas de resultados de búsqueda. Los resultados de búsqueda devuelven solo los mensajes que coinciden con los criterios de búsqueda; no se devuelve la jerarquía de carpetas.
El control se devuelve al cliente cuando la búsqueda ha finalizado.
Notas a los implementadores
Los contenedores de libreta de direcciones establecen criterios de búsqueda aplicando restricciones a sus tablas de contenido. Para obtener más información sobre los criterios de búsqueda y los contenedores de libreta de direcciones, consulte Implementación de búsqueda avanzada.
Debe admitir operaciones de apertura, copia, movimiento y eliminación en los mensajes de las carpetas de resultados de búsqueda, no en la propia carpeta search-results. No permita que los mensajes se creen o copien en una carpeta de resultados de búsqueda.
Notas para los llamadores
Para buscar destinatarios de mensajes, establezca lpRestriction para que apunte a una restricción de subobjeto con el miembro ulSubObject en la estructura SSubRestriction establecida en PR_MESSAGE_RECIPIENTS (PidTagMessageRecipients). Para buscar datos adjuntos, establezca el miembro ulSubObject en PR_MESSAGE_ATTACHMENTS (PidTagMessageAttachments). Establezca el miembro lpRes para que apunte a una restricción de propiedad que describa los criterios de búsqueda para los destinatarios o los datos adjuntos.
Por ejemplo, para buscar datos adjuntos de archivo que tengan la extensión .mss, establezca ulSubObject en PR_MESSAGE_ATTACHMENTS y lpRes en una restricción de propiedad que coincida con PR_ATTACH_EXTENSION (PidTagAttachExtension) con .mss.
Establecer la marca de FOREGROUND_SEARCH en el parámetro ulSearchFlags podría provocar una disminución en el rendimiento del sistema.
Puede usar SetSearchCriteria para cambiar los criterios de búsqueda de una búsqueda que ya está en curso. Puede especificar nuevas restricciones, nuevas listas de carpetas para buscar y una nueva prioridad de búsqueda, como actualizar una búsqueda a una prioridad más alta. Los cambios en la prioridad de búsqueda no hacen que se reinicie una búsqueda existente, pero sí otros cambios en los criterios de búsqueda.
Cuando haya terminado de usar una carpeta de resultados de búsqueda, puede eliminar la carpeta o dejar que permanezca abierta para su uso posterior. Si elimina la carpeta search-results, solo se eliminarán los vínculos de mensaje. Los mensajes reales permanecen en sus carpetas primarias.
Para obtener más información sobre las carpetas de resultados de búsqueda, vea Carpetas de búsqueda MAPI.
Referencia de MFCMAPI
Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.
Archivo | Función | Comment |
---|---|---|
HierarchyTableDlg.cpp |
CHierarchyTableDlg::OnEditSearchCriteria |
MFCMAPI usa el método IMAPIContainer::SetSearchCriteria para escribir criterios de búsqueda para una carpeta después de que un usuario la haya editado. |