Remarque
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
L’exemple de code suivant montre comment créer une restriction qui filtre tous les messages qui ne contiennent pas le mot « volleyball » dans la ligne d’objet et qui n’ont pas été envoyés à Sue à partir de Sam. Une arborescence de structures SRestriction est requise, le nœud supérieur étant une restriction AND implémentée avec une structure SAndRestriction . Les trois restrictions jointes par l’opération AND sont une restriction de sous-objet qui recherche les messages envoyés à Sue, une restriction de contenu qui recherche les messages de Sam et une autre restriction AND qui recherche les messages dont le sujet contient le terme « volleyball ». Étant donné que PR_SUBJECT (PidTagSubject) n’est pas une propriété obligatoire, une restriction Exist doit être incluse.
Ce code utilise l’allocation et l’initialisation dynamiques ; il est également possible d’allouer et d’initialiser statiquement. Par souci de concision, la vérification des erreurs qui doit se produire après les appels d’allocation n’est pas incluse dans l’exemple.
HRESULT BuildRestriction (LPSTR pszSent, LPSTR pszFrom,
LPSTR pszSubjectText);
{
LPSRestriction pRest, pAndRes, pObjRes, pSubjAndRes;
LPSPropValue pRecip, pSender, pSubject;
HRESULT hResult;
ULONG ulResCount = 3, ulSubjCount = 2
// Allocate and build restriction to join criteria
hResult = MAPIAllocateMore (sizeof(SRestriction)*ulResCount, pRest,
(LPVOID *)&pAndRes);
pRest->rt = RES_AND;
pRest->res.resAnd.cRes = ulResCount;
pRest->res.resAnd.lpRes = pAndRes;
// Allocate and build subobject restriction to search recipient list
hResult = MAPIAllocateMore (sizeof(SRestriction), pRest,
(LPVOID *)&pObjRes);
pAndRes[0].rt = RES_SUBRESTRICTION;
pAndRes[0].res.resSub.ulSubObject = PR_MESSAGE_RECIPIENTS;
pAndRes[0].res.resSub.lpRes = pObjRes;
// Allocate and build content restriction to look for recipient
hResult = MAPIAllocateMore (sizeof(SPropValue), pRest,
(LPVOID *)&pRecip);
pObjRes->rt = RES_CONTENT;
pObjRes->res.resContent.ulFuzzyLevel =
FL_FULLSTRING | FL_IGNORECASE;
pObjRes->res.resContent.ulPropTag = pRecip->ulPropTag =
PR_DISPLAY_NAME;
pObjRes->res.resContent.lpProp = pRecip;
pRecip->Value.LPSZ = pszSent; // pszSent set to Sue
// Allocate and build content restriction to look for sender
hResult = MAPIAllocateMore (sizeof(SPropValue), pRest,
(LPVOID *)&pSend);
pAndRes[1].rt = RES_CONTENT;
pAndRes[1].res.resContent.ulFuzzyLevel =
FL_FULLSTRING | FL_IGNORECASE;
pAndRes[1].res.resContent.ulPropTag = pSend->ulPropTag =
PR_SENDER_NAME;
pAndRes[1].res.resContent.lpProp = pSend;
pSend->Value.LPSZ = pszName; // pszName set to Sam
// Allocate and build restriction to look for subject
hResult = MAPIAllocateMore (sizeof(SRestriction)*ulSubjCount, pRest,
(LPVOID *)&pSubjAndRes);
pRest->rt = RES_AND;
pRest->res.resAnd.cRes = ulResCount;
pRest->res.resAnd.lpRes = pAndRes;
// Create an restriction to search for subject
hResult = MAPIAllocateMore (sizeof(SPropValue), pRest,
(LPVOID *)&pSubjAndRes);
pAndRes[2].rt = RES_AND;
pAndRes[2].res.resAnd.cRes = ulSubjCount;
pAndRes[2].res.resAnd.lpRes = pSubjAndRes;
// Exist restriction to check that PR_SUBJECT exists
hResult = MAPIAllocateMore (sizeof(SPropValue), pRest,
(LPVOID *)&pSubj);
pSubjAndRes[0].rt = RES_EXIST;
pSubjAndRes[0].res.resExist.ulReserved1 = 0;
pSubjAndRes[0].res.resExist.ulReserved2 = 0;
pSubjAndRes[0].res.resExist.ulPropTag = PR_SUBJECT;
// Content restriction to check for "volleyball" in subject
hResult = MAPIAllocateMore (sizeof(SPropValue), pRest,
(LPVOID *)&pSubj);
pSubjAndRes[1].res.resContent.ulFuzzyLevel =
FL_SUBSTRING | FL_IGNORECASE;
pSubjAndRes[1].res.resContent.ulPropTag = pSubj->ulPropTag =
PR_SUBJECT;
pSubjAndRes[1].res.resContent.lpProp = pSubj;
pSubj->Value.LPSZ = pszSubjectText;
return hResult;
}