Partager via


Sélection d’une version spécifique de MAPI à charger

S’applique à : Outlook 2013 | Outlook 2016

Lors d’une liaison explicite à une implémentation de MAPI, vous devez sélectionner soigneusement l’implémentation à charger.

Il existe deux méthodes à lier explicitement à une implémentation de MAPI.

  1. Chargez la bibliothèque de stub MAPI et spécifiez dans le Registre une DLL personnalisée à laquelle charger et distribuer les appels MAPI. Ou,

  2. Implémentez l’algorithme de recherche du client MAPI pour rechercher la version de MAPI utilisée par le client de messagerie par défaut et la charger.

Étant donné que vous pouvez modifier les Mapi32.dll Paramètres du Registre stub pour que votre application utilise n’importe quelle implémentation de MAPI, nous vous recommandons d’indiquer à votre application d’utiliser une implémentation de MAPI avec laquelle vous avez testé. Les éléments suivants décrivent les deux méthodes de liaison explicitement.

Lire les informations d’implémentation MAPI à partir du Registre

  1. Les clés de Registre qui indiquent une DLL personnalisée pour un client de messagerie se trouvent sous la HKLM\Software\Clients\Mail clé du client de messagerie.

    Le tableau suivant décrit ces clés :

    Clé Description
    MSIComponentID
    UN ID de catégorie PublishComponent (GUID) Windows Installer qui identifie la DLL qui exporte des appels MAPI ou MAPI simples. Si elle est définie, cette clé est prioritaire sur la clé DLLPath ou DLLPathEx .
    MSIApplicationLCID
    Identificateur de paramètres régionaux (LCID) pour votre application. La première valeur de chaîne identifie une sous-clé de et les valeurs de chaîne suivantes identifient les valeurs de HKLM\Software Registre sous cette clé qui contiennent des informations de paramètres régionaux.
    MSIOfficeLCID
    LCID pour Microsoft Office. La première valeur de chaîne identifie une sous-clé à partir de et les valeurs de chaîne suivantes identifient les valeurs de HKLM\Software Registre sous cette clé.

    Obtenez les informations à partir de ces clés.

  2. Transmettez les valeurs que vous avez obtenues à l’étape précédente à la fonction FGetComponentPath . FGetComponentPath est une fonction exportée par la bibliothèque stub MAPI Mapistub.dll. Elle retourne le chemin d’accès de la version personnalisée de MAPI.

Chargement de l’implémentation de MAPI marquée comme valeur par défaut

  1. Lisez la valeur du HKLM\Software\Clients\Mail::(default) Registre.

  2. Recherchez les informations relatives au client indiqué, comme décrit précédemment.

Remarque

Notez que le client de messagerie par défaut peut ne pas implémenter MAPI étendu.

Exemple

Pour charger MAPI tel qu’implémenté par Outlook, recherchez les clés de Registre sous HKLM\Software\Clients\Mail\Microsoft Outlook et passez-les à FGetComponentPath. FGetComponentPath retourne le chemin d’accès pour l’implémentation de MAPI d’Outlook.

Si les clés MSIComponentID, MSIApplicationLCID et MSIOfficeLCID ne sont pas définies, case activée la valeur de Registre DLLPathEx. Si les clés sont définies, FGetComponentPath indique le chemin de l’implémentation de MAPI du client.

Implémentation de l’algorithme de recherche du client MAPI

Le tableau suivant répertorie les quatre fonctions de MFCMAPI utilisées pour rechercher le chemin d’accès d’une implémentation personnalisée de MAPI :

Fonction Description
GetMAPIPath
Obtient le chemin de la bibliothèque MAPI.
GetMailKey
Obtient la clé de Registre de messagerie MAPI.
GetMapiMsiIds
Obtient l’identificateur Windows Installer.
GetComponentPath
Obtient le chemin du composant à l’aide de FGetComponentPath.

Étant donné que MFCMAPI charge l’implémentation par défaut de MAPI par défaut, si vous souhaitez utiliser une autre implémentation de MAPI, vous devez lui demander explicitement de le faire. Cette opération est effectuée à l’aide de la routine MAPI Session\Load .

Fonctionnement de ces fonctions

  1. MFCMAPI appelle GetMAPIPath, en passant null pour le paramètre client, afin de charger l’implémentation MAPI par défaut.

  2. GetMAPIPath appelle GetMapiMsiIds pour lire les valeurs de MSIComponentID, MSIApplicationLCID et MSIOfficeLCID.

  3. GetMapiMsiIds appelle GetMailKey pour ouvrir la clé de Registre pour le client de messagerie par défaut.

  4. GetMapiMsiIds utilise le handle de Registre retourné par GetMailKey pour rechercher des valeurs pour MSIComponentID, MSIApplicationLCID et MSIOfficeLCID.

  5. Les valeurs de MSIComponentID, MSIApplicationLCID et MSIOfficeLCID sont retournées à GetMAPIPath. GetMAPIPath puis les transmet à GetComponentPath.

  6. GetComponentPath charge la bibliothèque de stub MAPI, Mapi32.dll, à partir du répertoire système.

  7. GetComponentPath récupère ensuite l’adresse de la fonction FGetComponentPath à partir de Mapi32.dll, en supposant que Mapi32.dll exporte FGetComponentPath.

  8. Si l’obtention de l’adresse de FGetComponentPath à partir de Mapi32.dll échoue, GetComponentPath récupère l’adresse de Mapistub.dll.

  9. GetComponentPath appelle ensuite FGetComponentPath, en obtenant le chemin d’accès de la version par défaut de MAPI.

  10. GetMAPIPath retourne ensuite ce chemin d’accès à l’appelant, qui charge ensuite MAPI et y établit des liens explicites, comme décrit dans Lier aux fonctions MAPI.

Remarque

  • Pour prendre en charge les copies localisées de MAPI pour les paramètres régionaux anglais et non anglais, GetMAPIPath lit les valeurs des sous-clés MSIApplicationLCID et MSIOfficeLCID . GetMAPIPath appelle ensuite FGetComponentPath, en spécifiant d’abord MSIApplicationLCID comme szQualifier, puis en spécifiant de nouveau MSIOfficeLCID comme szQualifier. Pour plus d’informations sur les clés de Registre pour les clients de messagerie qui prennent en charge des langues autres que l’anglais, consultez Configuration des clés MSI pour votre DLL MAPI.
  • Si MFCMAPI ne reçoit pas de chemin d’accès pour MAPI à l’aide GetMAPIPathde , il charge la bibliothèque stub MAPI à partir du répertoire système.
  • La valeur de Registre MSMapiApps décrite dans Mappage explicite des appels MAPI aux DLL MAPI s’applique uniquement lorsque la bibliothèque de stub MAPI est utilisée. Les applications qui chargent une implémentation spécifique de MAPI ou qui chargent l’implémentation par défaut n’ont pas besoin de définir la clé de Registre MSMapiApps .

Voir aussi