Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Outlook 2013 | Outlook 2016
В следующем примере кода показано, как создать ограничение, которое отфильтровывает все сообщения, которые не содержат слово "волейбол" в строке темы и не были отправлены Sue от Sam. Требуется дерево структур SRestriction , а верхний узел — это ограничение AND , реализованное со структурой SAndRestriction . Три ограничения, объединенные операцией AND , представляют собой ограничение подобъекта, которое ищет сообщения, отправленные Sue, ограничение содержимого, которое ищет сообщения от Сэма, и другое ограничение И , которое ищет сообщения с темой , содержащей "волейбол". Так как PR_SUBJECT (PidTagSubject) не является обязательным свойством, необходимо включить ограничение Exist .
Этот код использует динамическое выделение и инициализацию; также можно выделить и инициализировать статически. В целях краткости проверка ошибок, которая должна произойти после вызовов выделения, не включена в пример.
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;
}