أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

الحصول على كيفية فتح رسائل باستخدام طراز كائن Outlook بالمعرف إدخال من MAPI في 6.0 Visual C++

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية304894
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
مقدمة حول
توضح هذه المقالة كيفية استخدام PR_ENTRYID الخاصية التي تم الحصول عليها من توسيع MAPI بفتح وعرض عنصر باستخدام طراز كائن Outlook.
معلومات أخرى
إنشاء إنشاء هذا المشروع نموذج في Microsoft Visual C++ اتبع الخطوات التالية:
  1. فتح Visual Studio بإنشاء تطبيق Win32 جديد يسمى "OOMEntryID" وحدد على تطبيقات Win32 بسيطة A.
  2. فتح ملف OOMEntryID.cpp واستبدال محتوياته بالكامل مع رمز أدناه. تأكد من تغيير المسار إلى Mso.dll ثم Msoutl.olb أشر إلى مواقعها الخاصة للكمبيوتر الخاص بك.
    #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#endifstruct 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. من القائمة المشروع انقر فوق إعدادات. انقر فوق علامة التبويب ارتباط ومن ثم تحديد الإدخال كالفئة.

    مقطع الوحدات النمطية مكتبة كائنات إضافة التالية.
    MSVCRT.LIB addrLkup.lib edkguid.lib edkdebug.lib edkmapi.lib edkutils.lib mapi32.lib						
    المقطع تجاهل مكتبات إضافة libcd.lib libc.lib.

    أغلق مربع الحوار إعدادات المشروع.
  4. إنشاء ثم قم بتشغيل المشروع.
  5. سيتم عرض الرسالة الأولى في علبة الوارد.
مراجع
لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
259298كيفية استخدام "نموذج كائن" Outlook من Visual C++ باستخدام عبارة #import

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 304894 - آخر مراجعة: 12/06/2015 04:31:37 - المراجعة: 5.5

واجهة برمجة تطبيقات الرسائل من Microsoft, Microsoft Outlook 2000, Microsoft Outlook 2000 Service Pack 1, Microsoft Outlook 2002 Standard Edition, Microsoft Visual Studio 6.0 Enterprise Edition

  • kbnosurvey kbarchive kbmt kbemail kbopenfile kbprogramming kbhowto kbmsg KB304894 KbMtar
تعليقات