Определение хранилища сообщений по умолчанию под Windows Mobile - PullRequest
2 голосов
/ 13 декабря 2008

Следующий фрагмент тестового кода запускается под Windows Mobile.

Цель состоит в том, чтобы найти хранилище сообщений по умолчанию, чтобы я мог получить правильное имя учетной записи для программного составления электронной почты.

IMAPISession *mapiSession;
HRESULT hr = S_OK;

MAPIInitialize (NULL);
IMAPITable *msgTable;

SRowSet *pRows;
IMsgStore *msgStore;

if (MAPILogonEx(0,NULL,NULL,0,&mapiSession) != S_OK)
{
//  MessageBox(g_hWnd,_T("Failed to logon"),_T("Error"),0);
}
else
{
SizedSPropTagArray(3, PropTagArr) = {3,{PR_DISPLAY_NAME, 
                        PR_ENTRYID,
                        PR_DEFAULT_STORE}};

    hr = mapiSession->GetMsgStoresTable(MAPI_UNICODE,&msgTable);

    hr = msgTable->SetColumns((LPSPropTagArray)&PropTagArr, 0);

    if (!hr)
    {
        do
        {
            hr = msgTable->QueryRows(1,0,&pRows);

            LPSPropValue lpProp;
            lpProp = &pRows->aRow[0].lpProps[0];

//          if(_tcscmp( lpProp->Value.LPSZ, _T("SMS") ) == 0 )
//              break;

            lpProp = &pRows->aRow[0].lpProps[0];
            if (lpProp->ulPropTag == PR_DEFAULT_STORE)
                break;

            lpProp = &pRows->aRow[0].lpProps[1];
            if (lpProp->ulPropTag == PR_DEFAULT_STORE)
                break;

            lpProp = &pRows->aRow[0].lpProps[2];
            if (lpProp->ulPropTag == PR_DEFAULT_STORE)
                break;

            FreeProws(pRows);
            pRows = NULL;

        }while (!hr);

    hr = mapiSession->OpenMsgStore (0, 
            pRows->aRow[0].lpProps[1].Value.bin.cb, 
            (ENTRYID*)pRows->aRow[0].lpProps[1].Value.bin.lpb, 
            NULL, 
            MDB_NO_DIALOG | MAPI_BEST_ACCESS, 
            &msgStore);

... НО, не удается получить свойство PR_DEFAULT_STORE на устройстве Windows Mobile. Я предполагаю, что Microsoft не реализовала это точно. И так, lpProp->ulPropTag не будет никогда == PR_DEFAULT_STORE. Это всегда 0000.

Кто-нибудь добился успеха в получении PR_DEFAULT_STORE с использованием MAPI под Windows Mobile?

Есть ли другой способ определения хранилища сообщений по умолчанию?

...