Как открыть папку "Finder" почтового ящика делегата с помощью Outlook MAPI

Я ищу способ открыть папку "Finder" почтового ящика делегата с помощью Outlook MAPI.

Я создал EntryID почтового ящика делегата, вызвав CreateStoreEntryID. Используя этот EntryID, я вызываю OpenMsgStore, который преуспел. Теперь я пытаюсь открыть папку "Finder", которая завершается с ошибкой MAPI_E_INVALID_PARAMETER. Я могу получить другие папки, такие как Входящие, Отправленные и т. Д.

          enum {

                         ePR_VALID_FOLDER_MASK,

                         ePR_IPM_FOLDER_ENTRYID,

                         FOLDER_NUMCOLS

          };

          SizedSPropTagArray(FOLDER_NUMCOLS, cols) = {

                         FOLDER_NUMCOLS,

                         {

                                       PR_VALID_FOLDER_MASK,

                                       PR_FINDER_ENTRYID,

                         }

          };



          ULONG pcount;

          SPropValue *props;

          hRes = pMapi_msgstore->GetProps((SPropTagArray *)&cols, 0, &pcount, &props);



          if (hRes == S_OK || hRes == MAPI_W_ERRORS_RETURNED) {

                         LONG mask;

                         if (props[ePR_VALID_FOLDER_MASK].ulPropTag != PT_ERROR)

                                       mask = props[ePR_VALID_FOLDER_MASK].Value.ul;

                         else

                                       mask = 0;

                         if ((mask & FOLDER_FINDER_VALID) &&

                                       props[ePR_IPM_FOLDER_ENTRYID].ulPropTag != PT_ERROR)

                         {

                                       hRes = **pMapi_msgstore->OpenEntry**(props[ePR_IPM_FOLDER_ENTRYID].Value.bin.cb,

                                       (LPENTRYID)props[ePR_IPM_FOLDER_ENTRYID].Value.bin.lpb,

                                       NULL,

                                       MAPI_MODIFY,

                                       &ulType,

                                       (LPUNKNOWN*)&m_lpFinderFolder);

Здесь вызов OpenEntry завершается с ошибкой MAPI_E_INVALID_PARAMETER. Вызов pMapi_msgstore -> GetProps((SPropTagArray *)&cols, 0, &pcount, &props) не завершается ошибкой, но & props заполнен неправильно. Разве нельзя открыть папку Finder почтового ящика делегата?

Благодарю.

1 ответ

Линия

props[ePR_IPM_FOLDER_ENTRYID].ulPropTag != PT_ERROR)

должен быть изменен на

(props[ePR_IPM_FOLDER_ENTRYID].ulPropTag & PROP_TYPE_MASK) != PT_ERROR)
Другие вопросы по тегам