Visual C++ 6.0 MAPI alınan bir ileti, Outlook nesne modeli ile giriş KIMLIĞI kullanarak açma hakkında

Makale çevirileri Makale çevirileri
Makale numarası: 304894 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Giriş

Bu makalede, PR_ENTRYID nas?l kullan?laca??n? gösterir alınan özelliği açmak ve bir maddeyi Outlook nesne modeli kullanarak görüntülemek için MAPI genişletilmiş.

Daha fazla bilgi

Oluşturmak ve bu örnek Microsoft Visual C++ projede oluşturmak için aşağıdaki adımları izleyin:
  1. Visual Studio'nun açın, "OOMEntryID" adlı yeni bir Win32 uygulaması oluşturma ve Basit BIR Win32 uygulaması ' ı seçin.
  2. OOMEntryID.cpp dosyayı açın ve tüm içeriğini aşağıdaki kodla değiştirin. Mso.dll ve Msoutl.olb bilgisayarınızın ilgili konumlarını işaret etmek için yolu değiştirme emin olun.
    #include "stdafx.h"
    #include "edk.h"
    
    // Import Outlook object model.
    #define IMPPROPS rename_namespace("OL")
    // Define this according to the Outlook object model 
    // version you are compiling under.
    
    //#define OL2000 // Outlook 2000
    #define OL2002 // Outlook 2002 (2002)
    
    #if defined(OL2000)
      // TODO: Verify that the path to the file is correct.
      #import "c:\Program Files\Microsoft Office\Office\mso9.dll" IMPPROPS 
      #import "c:\Program Files\Microsoft Office\Office\msoutl9.olb" IMPPROPS
    #elif defined(OL2002)
      // TODO: Verify that the path to the file is correct.
      #import "c:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" IMPPROPS 
      #import "c:\Program Files\Microsoft Office\Office10\\msoutl.olb" IMPPROPS
    #endif
    
    struct StartOle 
    {
       StartOle() { CoInitialize(NULL); }
       ~StartOle() { CoUninitialize(); }
    } _inst_StartOle;
    
    
    void dump_com_error(_com_error &e)
    {
        _tprintf(_T("Oops - hit an error!\n"));
        _tprintf(_T("\a\tCode = %08lx\n"), e.Error());
        _tprintf(_T("\a\tCode meaning = %s\n"), e.ErrorMessage());
        _bstr_t bstrSource(e.Source());
        _bstr_t bstrDescription(e.Description());
        _tprintf(_T("\a\tSource = %s\n"), (LPCTSTR) bstrSource);
        _tprintf(_T("\a\tDescription = %s\n"), (LPCTSTR) bstrDescription);
    }
    
    using namespace OL;
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      // MAPI session pointer.
      LPMAPISESSION  pSession = NULL; 
      HRESULT hRes = S_OK;
      
      // Please add error checking yourself.
    
      // Initialize MAPI.
      hRes = MAPIInitialize(NULL);
    
      // Log on to MAPI and get a session pointer.
      hRes = MAPILogonEx(0, NULL, NULL, MAPI_LOGON_UI, &pSession);
    
      // Open message store.
      ULONG      cbEIDStore = 0;
      LPENTRYID  lpEIDStore = NULL;
      IMsgStore  *pMsgStore;
    
      hRes = HrMAPIFindDefaultMsgStore(pSession, 
                      &cbEIDStore, 
                      &lpEIDStore);
    
      hRes = pSession->OpenMsgStore(NULL, 
                      cbEIDStore, 
                      lpEIDStore, 
                      NULL, 
                      MAPI_BEST_ACCESS, 
                      &pMsgStore);  
    
      // Open Inbox.
      ULONG        ulObjType;
      ULONG        cbEntryID;
      LPENTRYID    lppEntryID;
      IMAPIFolder  *lpFolder;
    
      hRes = pMsgStore->GetReceiveFolder(NULL, 
                         NULL, 
                         &cbEntryID, 
                         &lppEntryID, 
                         NULL);
    
      hRes = pMsgStore->OpenEntry(cbEntryID, 
                    lppEntryID, 
                    NULL, 
                    MAPI_BEST_ACCESS, 
                    &ulObjType, 
                    (LPUNKNOWN *)&lpFolder);
    
    
      // Get Inbox items.
      LPMAPITABLE  lpContentsTable = NULL;
      LPSRowSet    pRows = NULL;
      enum {ePR_SUBJECT, ePR_ENTRYID,  NUM_COLS};
      static SizedSPropTagArray(NUM_COLS,sptCols) 
      = {NUM_COLS, PR_SUBJECT, PR_ENTRYID};
      
    
      hRes = lpFolder->GetContentsTable(0, 
                        &lpContentsTable);
    
      hRes = HrQueryAllRows(lpContentsTable, 
                  (LPSPropTagArray) &sptCols, 
                  NULL, 
                  NULL, 
                  0, 
                  &pRows);
      
      if (pRows->cRows > 0) // Make sure there is at least one message.
      {
        // Get the first item in the Inbox and get its entry ID.
        IMessage    *lpMessage;
        LPSPropValue  pspvEID = NULL;
    
        hRes = pMsgStore->OpenEntry(pRows->aRow[0].lpProps[ePR_ENTRYID].Value.bin.cb, 
                                 (LPENTRYID)pRows->aRow[0].lpProps[ePR_ENTRYID].Value.bin.lpb, 
                                 NULL, 
                                 MAPI_BEST_ACCESS, 
                                 &ulObjType, 
                                 (LPUNKNOWN *)&lpMessage);
        
        hRes = HrGetOneProp(lpMessage, 
                  PR_ENTRYID, 
                  &pspvEID);
        
        char szEID[1001];
        HexFromBin(pspvEID[0].Value.bin.lpb, 
                   pspvEID[0].Value.bin.cb, 
                   szEID);
    
        // Open Outlook item using the entry ID we got from MAPI.
    
        try{
          OL::_ApplicationPtr  pOutlook("Outlook.Application");
          OL::_NameSpacePtr    pNameSpace = pOutlook->GetNamespace("MAPI");
          OL::_MailItemPtr     pMailItem = NULL;
    
          pMailItem = pNameSpace->GetItemFromID(szEID, vtMissing);
          if (pMailItem)
          {
            // Display message.
            pMailItem->Display(vtMissing);
          }
        } 
    
        catch (_com_error &e)
        {
          dump_com_error(e);
        }
    
        UlRelease(lpMessage);
      }
      else
      {
        MessageBox(NULL, 
               "There are no messages in the inbox", 
               "Open Item", 
               MB_OK);
      }
    
      pSession->Logoff(NULL, 0L, 0);
    
      FreeProws(pRows);
      UlRelease(lpContentsTable);
      UlRelease(lpFolder);
      UlRelease(pMsgStore);
      UlRelease(pSession);
    
      return 0;
    } 
    					
  3. Proje menüsünde Ayarlar ' ı tıklatın. Bağlantı sekmesini tıklatın ve sonra da Giriş kategori seçin.

    Nesne/Kitaplığı modülleri bölümüne aşağıdakileri ekleyin.
    MSVCRT.LIB addrLkup.lib edkguid.lib edkdebug.lib edkmapi.lib edkutils.lib mapi32.lib
    						
    Kitaplıkları Yoksay bölümüne libcd.lib ve libc.lib ekleyin.

    <a0>Project ayarları</a0> iletişim kutusunu kapatın.
  4. Oluşturup sonra da projeyi çalıştırın.
  5. Ilk gelen iletide görüntülenir.

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
259298Visual C++ ile gelen bir Outlook nesne modeli bir alma deyimi kullanarak nasıl kullanılır

Özellikler

Makale numarası: 304894 - Last Review: 12 Şubat 2007 Pazartesi - Gözden geçirme: 5.5
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Messaging Application Programming Interface
  • Microsoft Outlook 2000
  • Microsoft Outlook 2000 Service Pack 1
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Visual Studio 6.0 Enterprise Edition
Anahtar Kelimeler: 
kbmt kbemail kbopenfile kbprogramming kbhowto kbmsg KB304894 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:304894

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com