Compartir a través de


Abrir un contenedor de libreta de direcciones

Hace referencia a: Outlook 2013 | Outlook 2016

Después de abrir la libreta de direcciones integrada mapi, abra uno o varios contenedores de libreta de direcciones para acceder a los destinatarios dentro de ellos.

Para abrir el contenedor de nivel superior de la libreta de direcciones, llame a IAddrBook::OpenEntry con un identificador de entrada NULL.

Los contenedores de libreta de direcciones se pueden implementar con acceso de solo lectura o de lectura y escritura. Los contenedores de solo lectura solo se usan para la exploración. Los contenedores de lectura y escritura se pueden modificar, lo que permite a los clientes crear nuevas entradas y eliminar y modificar las entradas existentes. Todos los contenedores de libreta de direcciones personales (PAB) se implementan como contenedores de lectura y escritura.

Para abrir cualquier contenedor de nivel inferior, llame a OpenEntry y especifique el identificador de entrada del contenedor que se va a abrir.

Abrir el contenedor designado como PAB

  1. Llame a IAddrBook::GetPAB para recuperar el identificador de entrada del PAB.

  2. Pase este identificador de entrada a IAddrBook::OpenEntry.

Abrir un contenedor que no sea el PAB

  1. Llame a IAddrBook::OpenEntry con un identificador de entrada NULL para abrir el contenedor raíz de la libreta de direcciones.

  2. Llame al método IMAPIContainer::GetHierarchyTable del contenedor raíz para recuperar su tabla de jerarquía, una lista de todos los contenedores de nivel superior de la libreta de direcciones.

  3. Si el contenedor que se va a abrir es de un tipo específico:

    • Cree una estructura SPropertyRestriction con PR_DISPLAY_TYPE (PidTagDisplayType) para la etiqueta de propiedad, el tipo del contenedor para el valor de propiedad y RELOP_EQ para la relación. PR_DISPLAY_TYPE se pueden establecer en muchos valores, entre ellos:

    • DT_GLOBAL limitar la tabla de jerarquía a los contenedores que pertenecen a la lista global de direcciones.

    • DT_LOCAL limitar la tabla a los contenedores que pertenecen a una libreta de direcciones local.

    • DT_MODIFIABLE limitar la tabla a los contenedores que se pueden modificar.

    • Cree una estructura SPropTagArray que incluya PR_ENTRYID, PR_DISPLAY_TYPE y cualquier otra columna de interés.

    • Llame a HrQueryAllRows, pasando la restricción de propiedad y la matriz de etiquetas de propiedad. HrQueryAllRows devolverá cero o más filas, una fila por cada contenedor que pertenezca al tipo especificado. Esté preparado para controlar la devolución de cualquier número de filas.

    • Llame a IAddrBook::OpenEntry con el identificador de entrada de la columna PR_ENTRYID de la fila que representa el contenedor de interés.

  4. Si el contenedor que se va a abrir pertenece a un proveedor de libreta de direcciones específico:

    • Cree una estructura SPropertyRestriction con PR_AB_PROVIDERS (PidTagAbProviders) para la etiqueta de propiedad, un valor específico del proveedor para el valor de propiedad y RELOP_EQ para la relación. Normalmente, el valor específico del proveedor es un identificador o GUID único global. Encontrará este valor publicado en uno de los archivos de encabezado del proveedor de libreta de direcciones.

    • Cree una estructura SPropTagArray que incluya PR_ENTRYID (PidTagEntryId), PR_AB_PROVIDERS y cualquier otra columna de interés.

    • Llame a HrQueryAllRows, pasando la restricción de propiedad y la matriz de etiquetas de propiedad. HrQueryAllRows devolverá cero filas si el proveedor de libreta de direcciones especificado no está en el perfil. Puede devolver una o más filas para los contenedores de nivel superior del proveedor, en función de cómo se organice el proveedor.

    • Llame a IAddrBook::OpenEntry con el identificador de entrada de la columna PR_ENTRYID de la fila que representa el contenedor de interés. Si el contenedor que le interesa no es un contenedor de nivel superior, busque el contenedor de nivel superior y recorra la jerarquía.