如何在 Outlook 2003 中搭配使用快取 Exchange 模式功能與 Extended MAPI 應用程式

Office 2003 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Office 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

本文已封存。本文係以「現狀」提供且不會再更新。
簡介
「快取 Exchange 模式」是 Microsoft Office Outlook 2003 的新功能,可讓 Outlook 2003 存取使用者信箱的本機複本,同時與 Microsoft Exchange 中使用者信箱的遠端複本保持連線。對 Extended MAPI 開發人員而言,瞭解這項功能對他們解決方案的影響,以及如何使用這項功能是很重要的。
其他相關資訊
如果 Outlook 2003 以「快取 Exchange 模式」執行,則任何登入到相同工作階段的 Extended MAPI 應用程式也會連線到快取郵件儲存區。所存取的任何資料以及所做的任何變更都會影響到信箱的本機複本。有時候,這不是您所樂見的情況。Outlook 2003 包含一個新標幟,稱為 MDB_ONLINE
#define MDB_ONLINE ((ULONG) 0x00000100)
這個標幟可以傳遞到 IMAPISession::OpenMsgStore MAPI 函數。這個標幟會取代對本機郵件儲存區的連線,並在遠端伺服器開啟儲存區。

注意 這個標幟不允許在相同的 MAPI 工作階段中同時在快取模式與非快取模式中開啟 Exchange 儲存區。如果您已經開啟快取郵件儲存區,則在使用這個標幟開啟儲存區之前,必須先將儲存區關閉,或者開啟新的 MAPI 工作階段,使用這個標幟開啟遠端伺服器上的 Exchange 儲存區。

下列程式碼示範如何使用這個標幟:
//Obtain the table of all the message stores that are availablehRes = lpMAPISession -> GetMsgStoresTable(0, &pStoresTbl);    //Set up restrictions for the default storesres.rt = RES_PROPERTY;                                  //Comparing a propertysres.res.resProperty.relop = RELOP_EQ;                   //Testing equalitysres.res.resProperty.ulPropTag = PR_DEFAULT_STORE;       //Tag to comparesres.res.resProperty.lpProp = &spv;                      //Prop tag and value to compare against    spv.ulPropTag = PR_DEFAULT_STORE;                        //Tag typespv.Value.b   = TRUE;                                    //Tag value    //Convert the table to an array that can be stepped through//Only one message store should have PR_DEFAULT_STORE set to true, so that only one will be returnedhRes = HrQueryAllRows(pStoresTbl,                                          //Table to query(LPSPropTagArray) &sptCols,                          //Which columns to obtain&sres,                                               //Restriction to useNULL,                                                //No sort order0,                                                   //Max number of rows (0 means no limit)&pRow);                                              //Array to return    //Open the first returned (default) message storehRes = lpMAPISession->OpenMsgStore(NULL,                                                //Window handle for dialogspRow->aRow[0].lpProps[EID].Value.bin.cb,             //size and...(LPENTRYID)pRow->aRow[0].lpProps[EID].Value.bin.lpb, //value of entry to openNULL,                                                //Use default interface (IMsgStore) to open storeMAPI_BEST_ACCESS | MDB_ONLINE,                       //Flags&lpTempMDB);                                         //Pointer to put the store in
此外,您可以將 MAPI_NO_CACHE 標幟傳遞至 IMsgStore::OpenEntry MAPI 函數,以略過特定項目或資料夾上的快取:
#define MAPI_NO_CACHE ((ULONG) 0x00000200)
下列程式碼示範如何使用這個標幟:
// Open the root folder of the message storehRes = lpMDB->OpenEntry(0,                                                   // size of entry ID                            NULL,                                                // Pointer to entry IDNULL,                                                // Use default interface (IMAPIFolder)MAPI_BEST_ACCESS | MAPI_NO_CACHE,                    // Flags&ulObjType,                                          // Output parameter indicates the type of object that is returned(LPUNKNOWN *)&lpRootFolder)))                        // Pointer to put the opened item in
注意 如果您已使用 MDB_ONLINE 標幟開啟郵件儲存區,則不需要使用 MAPI_NO_CACHE 標幟。
內容

文章識別碼:834496 - 最後檢閱時間:01/12/2015 23:07:05 - 修訂: 2.1

  • Microsoft Office Outlook 2003
  • kbnosurvey kbarchive kbinfo kbmsg kbprogramming kbsample KB834496
意見反應