IMAPISession::OpenEntry
適用於:Outlook 2013 |Outlook 2016
開啟物件,並傳回介面指標以進行其他存取。
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
參數
cbEntryID
[in] lpEntryID 參數所指向之專案標識碼中的位元組計數。
lpEntryID
[in]要開啟之物件之專案標識碼的指標。
lpInterface
[in]介面識別碼的指標 (IID) ,表示要用來存取已開啟物件的介面。 傳遞 NULL 會傳回對象的標準介面。 例如,如果要開啟的對像是訊息,則標準介面為 IMessage;針對資料夾,它是 IMAPIFolder。 通訊錄對象的標準介面是通訊組清單的 IDistList 和訊息使用者的 IMailUser 。
ulFlags
[in]控制物件開啟方式的旗標位掩碼。 您可以使用下列旗標:
MAPI_BEST_ACCESS
要求使用用戶允許的最大網路許可權和最大用戶端應用程式存取權來開啟物件。 例如,如果用戶端具有讀取/寫入許可權,則應該以讀取/寫入許可權開啟物件;如果用戶端具有唯讀許可權,則應該以唯讀許可權開啟物件。
MAPI_CACHE_OK
使用所有方法,包括離線通訊錄,來執行名稱解析。
MAPI_CACHE_ONLY
僅使用離線通訊錄來執行名稱解析。 例如,您可以使用此旗標來允許用戶端應用程式在快取交換模式中開啟 GAL) 的全域通訊清單 (,並從快取存取該通訊簿中的專案,而不需要在用戶端與伺服器之間建立流量。 只有 Exchange 通訊簿提供者支援此旗標。
MAPI_DEFERRED_ERRORS
允許 OpenEntry 成功傳回,可能在物件完全可供呼叫的用戶端使用之前。 如果對象無法使用,則進行後續物件呼叫可能會導致錯誤。
MAPI_MODIFY
要求讀取/寫入許可權。 根據預設,物件會以唯讀許可權開啟,而用戶端不應在授與讀取/寫入許可權的假設下運作。
MAPI_NO_CACHE
請勿使用離線通訊錄來執行名稱解析。 只有 Exchange 通訊簿提供者支援此旗標。
SHOW_SOFT_DELETES
顯示目前標示為虛刪除 (的專案,也就是它們處於刪除專案保留時間階段) 。
lpulObjType
[out]開啟之物件類型的指標。
lppUnk
[out]指向已開啟物件之指標的指標。
傳回值
S_OK
物件已成功開啟。
MAPI_E_NO_ACCESS
嘗試修改唯讀物件,或嘗試存取用戶許可權不足的物件。
MAPI_E_NOT_FOUND
沒有物件與 lpEntryID 參數中傳遞的專案標識符相關聯。
MAPI_E_UNKNOWN_ENTRYID
在 lpEntryID 參數中傳遞的專案識別碼是無法辨識的格式。 如果包含 對象的服務提供者未開啟,通常會傳回這個值。
註解
IMAPISession::OpenEntry 方法會開啟訊息存放區或通訊簿對象,傳回可用於存取物件之介面的指標。
呼叫者注意事項
重要事項
在公用存放區上開啟資料夾專案時,例如資料夾和訊息,請使用 IMsgStore::OpenEntry ,而不是 IMAPISession::OpenEntry。 這可確保在配置檔中定義多個 Exchange 帳戶時,公用資料夾正常運作。
只有在您不知道要開啟的物件類型時,才呼叫 IMAPISession::OpenEntry 。 如果您知道要開啟資料夾或訊息,請呼叫 IMsgStore::OpenEntry。 如果您知道要開啟通訊簿容器、傳訊用戶或通訊組清單,請呼叫 IAddrBook::OpenEntry。 這些更具體的方法比 IMAPISession::OpenEntry 更快。
MAPI 會以唯讀許可權開啟所有物件,除非您在 ulFlags 參數中設定MAPI_MODIFY或MAPI_BEST_ACCESS旗標。 設定其中一個旗標並不保證特定類型的存取;授與的許可權取決於服務提供者、存取層級和物件。 若要判斷已開啟物件的存取層級,請擷取其 PR_ACCESS_LEVEL (PidTagAccessLevel) 屬性。
呼叫 IMAPISession::OpenEntry 並將 lpEntryID 設定為指向訊息存放區的專案標識符,與呼叫已設定MDB_NO_DIALOG旗標的 IMAPISession::OpenMsgStore 方法相同。 旗標設定也是相等的,不同之處在於若要向 OpenMsgStore要求讀取/寫入許可權,您必須設定MDB_WRITE旗標,而不是MAPI_MODIFY。
檢查 lpulObjType 參數中傳回的值,以判斷傳回的物件類型是否為您預期的類型。 如果物件類型不是您預期的類型,請將 lppUnk 參數的指標轉換成適當類型的指標。 例如,如果您要開啟資料夾,請將 lppUnk 轉換成 LPMAPIFOLDER 類型的指標。
MFCMAPI 參考
如需 MFCMAPI 範例程式代碼,請參閱下表。
檔案 | Function | Comment |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI 使用 IMAPISession::OpenEntry 方法來開啟 物件。 |