locked
无法取得联系人项 RRS feed

  • 问题

  • #define INITGUID
    #include <windows.h>
    #include <initguid.h>
    #include <pimstore.h>
    extern "C" BOOL __stdcall BackupConnect(LPCTSTR lpPath, BOOL bAutoFileName)
    {
     AFX_MANAGE_STATE(AfxGetStaticModuleState());
     CComPtr<IPOutlookApp> pApp;
     if(FAILED(pApp.CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER)))
     {
      return FALSE;
     }
     if(FAILED(pApp->Logon(NULL)))
     {
      return FALSE;
     }
     CComPtr<IFolder> pFolder;
     if(FAILED(pApp->GetDefaultFolder(olFolderContacts, &pFolder)))
     {
      return FALSE;
     }
     CComPtr<IPOutlookItemCollection> pCol;
     if(FAILED(pFolder->get_Items(&pCol)))
     {
      return FALSE;
     }
     int nCount = 0;
     CComPtr<IContact> pContact;
     if(FAILED(pCol->get_Count(&nCount)))
     {
      return FALSE;
     }
     for(int i = 0; i < nCount; i++)
     {
      HRESULT hr = pCol->Item(i, reinterpret_cast<IDispatch**>(&pContact));
      if(FAILED(hr))
      {
       continue;
      }
      CComBSTR s;
      if(SUCCEEDED(pContact->get_FirstName(&s)))
      {
       CString szFirstName(s);
       AfxMessageBox(s);
      }
      if(SUCCEEDED(pContact->get_LastName(&s)))
      {
       CString szLastName(s);
       AfxMessageBox(s);
      }
      pContact.Release();
     }
     pCol.Release();
     pFolder.Release();
     pApp->Logoff();
     pApp.Release();
     return TRUE;
    }

     

    如题,程序编译正常,能运行,但是在运行到HRESULT hr = pCol->Item(i, reinterpret_cast<IDispatch**>(&pContact));此处时hr 返回E_INVALIDARG,查阅了很多文档,都不知道这个表示什么意思,希望能得到解决,谢谢大家!

    2010年3月23日 14:29

答案

  • 搞定了,索引从1开始,不像大多数数组索引从0开始

     for(int i = 1; i <= nCount; i++)

    • 已标记为答案 独孤求 2010年3月23日 14:45
    2010年3月23日 14:45