Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Outlook 2013 | Outlook 2016
Lorsque le complément d’état hors connexion est déconnecté, vous devez implémenter des fonctions pour l’arrêter et le nettoyer correctement. Pour plus d’informations sur la manière de configurer et d'utiliser le complément d’état hors connexion pour surveiller les modifications de l’état de connexion, reportez-vous aux articles Configuration d’un complément d’état hors connexion et Surveillance des modifications de l’état de connexion à l’aide d’un complément d’état hors connexion.
Dans cette rubrique, ces fonctions de déconnexion, d’arrêt et de nettoyage sont illustrées à l’aide d’exemples de code provenant de l’exemple de complément d’état hors connexion. L’exemple de complément d’état hors connexion est un complément COM qui ajoute un menu État hors connexion à Outlook et qui utilise l’API d’état hors connexion. Dans le menu État hors connexion, vous pouvez activer ou désactiver la surveillance de l’état, vérifier l’état actuel ainsi que le modifier. Pour plus d’informations sur le téléchargement et l’installation de l’exemple de complément d’état hors connexion, reportez-vous à l’article Installation de l’exemple de complément d’état hors connexion. Pour plus d’informations sur l’API d’état hors connexion, reportez-vous à l’article À propos de l’API d’état hors connexion.
Routine à la déconnexion (OnDisconnection)
La méthode IIDTExtensibility2.OnDisconnection est appelée lorsque le complément d’état hors connexion est déchargé. Vous devez implémenter un code de nettoyage dans cette fonction. Dans l’exemple suivant, la fonction IDTExtensibility2.OnDisconnection appelle la HrTermAddin
fonction .
Exemple CMyAddin::OnDisconnection()
STDMETHODIMP CMyAddin::OnDisconnection(ext_DisconnectMode /*RemoveMode*/, SAFEARRAY * * /*custom*/)
{
Log(true,"OnDisconnection\n");
HRESULT hRes = S_OK;
hRes = HrTermAddin();
return hRes;
}
Fonction d’arrêt du complément (TermAddin)
La HrTermAddin
fonction appelle les inDeInitMonitor
fonctions , HrRemoveMenuItems
et UnloadLibraries
pour terminer le nettoyage du complément d’état hors connexion.
Exemple CMyAddin::HrTermAddin()
HRESULT CMyAddin::HrTermAddin()
{
HRESULT hRes = S_OK;
DeInitMonitor();
hRes = HrRemoveMenuItems();
UnloadLibraries();
return hRes;
}
Routine de désinitialisation du moniteur (DeInitMonitor)
La inDeInitMonitor
fonction appelle la fonction IMAPIOfflineMgr ::Unadvise pour annuler les rappels de l’objet hors connexion.
Exemple DeInitMonitor()
void DeInitMonitor()
{
Log(true,_T("Deinitializing Outlook Offline State Monitor\n"));
HRESULT hRes = S_OK;
if (g_lpOfflineMgr)
{
hRes = g_lpOfflineMgr->Unadvise(MAPIOFFLINE_UNADVISE_DEFAULT, g_ulAdviseToken);
g_lpOfflineMgr->Release();
g_lpOfflineMgr = NULL;
g_ulAdviseToken = NULL;
}
}
Routine de suppression d’éléments de menu (RemoveMenuItems)
La HrRemoveMenuItems
fonction appelle DispEventUnadvise
pour chaque élément de menu sous le menu État hors connexion , puis supprime le menu État hors connexion .
Exemple CMyAddin::HrRemoveMenuItems()
HRESULT CMyAddin::HrRemoveMenuItems()
{
Log(true,"HrRemoveMenuItems\n");
HRESULT hRes = S_OK;
if (m_fMenuItemsAdded)
{
try
{
if (m_spInitButton)
{
m_InitButtonHandler.DispEventUnadvise(m_spInitButton);
}
if (m_spDeinitButton)
{
m_DeinitButtonHandler.DispEventUnadvise(m_spDeinitButton);
}
if (m_spGetStateButton)
{
m_GetStateButtonHandler.DispEventUnadvise(m_spGetStateButton);
}
if (m_spSetStateButton)
{
m_SetStateButtonHandler.DispEventUnadvise(m_spSetStateButton);
}
m_spMyMenu->Delete();
}
catch(_com_error)
{
hRes = E_FAIL;
}
if (SUCCEEDED(hRes))
{
m_fMenuItemsAdded = false;
}
}
return hRes;
}
Routine de déchargement de bibliothèques (UnloadLibraries)
Lorsque le complément est déchargé à partir d’Outlook, la UnloadLibraries
fonction décharge les bibliothèques de liens dynamiques (DLL) requises par le complément.
Exemple UnloadLibraries()
void UnloadLibraries()
{
Log(true,_T("UnloadLibraries - freeing modules\n"));
pfnHrOpenOfflineObj = NULL;
pfnMAPIFreeBuffer = NULL;
if (hModMSMAPI) FreeLibrary(hModMSMAPI);
hModMSMAPI = NULL;
if (hModMAPI) FreeLibrary(hModMAPI);
hModMAPI = NULL;
if (hModMAPIStub) FreeLibrary(hModMAPIStub);
hModMAPIStub = NULL;
}
Voir aussi
- À propos de l’API d’état hors connexion
- Installation de l’exemple de complément d’état hors connexion
- À propos de l’exemple de complément d’état hors connexion
- Configuration d’un complément d’état hors connexion
- Surveillance des modifications de l’état de connexion à l’aide d’un complément d’état hors connexion