開發人員關於行事曆變更的資訊如 Outlook 2003 Service Pack 2、 Exchange Server 2003 Service Pack 2,以及較新版本 Outlook 和 Exchange 伺服器的

文章翻譯 文章翻譯
文章編號: 899919 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

本文將告訴您,如何 Microsoft Office Outlook 2003 Service Pack 2 (SP2) 及更新版本的 Service Pack、 Microsoft Exchange Server 2003 Service Pack 2 (SP2) 並更新版本 Outlook 和 Exchange 伺服器的控點會議的變更。這個新的設計可以解決在快取模式中由 Outlook 2003 所引入的消失不見會議案例。

新的設計並沒有對一般使用者的可見影響。不過,新的設計可能會影響整合與行事曆功能,在 Outlook 中的自訂解決方案。本文將告訴您新的設計,以便自訂解決方案的開發人員可以更新那些解決方案,如果需要。

新設計的運作方式,如下所示。在使用者接受或暫訂接受從會議邀請] 或 [行事曆項目從一個會議時從行事曆刪除現有的行事曆項目。此外,重複的行事曆項目會建立已刪除的項目。 因此,新的行事曆項目都有不同於舊的行事曆項目項目 ID 的項目 ID。

如果它們設計假設行事曆項目的項目 ID 會保持一致,或只有很少變更的方式自訂解決方案可能會造成不利影響。

依預設此新會議接受度行為已啟用,在 Outlook 2003 SP2 與更新版本。不過,可停用或重新啟用使用 Outlook 用戶端上的下列登錄資料行為:
索引鍵: HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Options\Calendar
DWORD: DisableMeetingRegeneration
: 1 = 還原到 pre-SP2 行為 ; 0 = 使用新的 SP2 行為
附註沒有這個登錄] 資料 Outlook 2003 會使用預設 SP2 或更新版本的服務套件行為。

在 Outlook 2007 中這個登錄機碼不適用於 Office 部署工具。如需詳細資訊檢視部署文件。如果要執行此動作請造訪下列的 [Microsoft] 網站:
http://office.microsoft.com

其他相關資訊

MAPI 為基礎的項目 ID 的背景

當 Outlook 資料夾中儲存項目時,項目被指派項目所在的儲存區項目識別碼的值。存放區的例子有 Microsoft Exchange Server 信箱]、 [Exchange 伺服器公用資料夾儲存區] 和 [個人資料夾 (.pst) 檔案。

項目 ID 並保證是唯一存放區內。但是,項目 ID 可以在某些情況下變更。這些情況包括當項目移動到不同的資料夾或其他存放。當使用者在 Outlook 中執行特定功能時,也可以變更項目 ID。這些函式包含匯出和 reimporting 資料。新的方法來處理行事曆在 Outlook 2003 SP2 中的項目,並稍後服務套件在 Exchange Server 2003 SP2 時,則另一個的範例可以變更的項目 ID。

如需有關項目 ID 的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms531268.aspx
有各種不同的 API 支援工作項目 ID。這些 API 包含延伸 MAPI]、 [CDO 1.21 物件程式庫] 及 [Outlook 物件程式庫。

這個新的設計可能影響解決方案的方式

一些與 Outlook 整合的解決方案會持續追蹤的外部資料庫中的 Outlook 資料。其他解決方案可以使用自訂 Outlook 表單上另一個項目,提供連結功能欄位儲存的一個項目項目 ID。在這些案例您可以使用例如 GetItemFromID 方法的方法在 Outlook 物件程式庫中直接存取項目根據其項目識別碼。

不過,使用的項目 ID 來找出的項目可能會變得不可靠 SP2 之後,或者安裝更新版本的 Service Pack。因此,您有下列選項:
  1. 請更新您的程式碼進行了行事曆項目項目 ID 將會變更的事實。
  2. 使用通用物件識別碼。這是保持整個存留期的行事曆項目相同的識別項。
身為開發人員您應該考慮這個新的設計在 Outlook 的行為中當您設計或更新與 Outlook 行事曆整合的自訂解決方案。

通用物件識別碼

全域物件 ID 是 MAPI 屬性,Outlook 用來比對會議更新與行事曆上的特定會議的回應。通用物件識別碼是一樣的跨所有行事曆項目 」 之拷貝。在 Microsoft Office Outlook 2003 Service Pack 1 (SP1) 和較早版本,召集人第一次傳送會議邀請時,就會產生通用物件識別碼。因此,這些較早版本的 Outlook 並不會產生全域的物件 ID 為尚未傳送的會議或有無收件者的約會。

在 Outlook 2003 SP2 或更新版本的 Office 中,當使用者第一次儲存一個行事曆項目的不論是否傳送時,就會產生通用物件識別碼。 因此,開頭 Outlook 2003 SP2 或更新版本的 Service Pack 的所有約會會都有通用的物件 ID,不論是否為其他使用者都已被邀請的會議。

若要以程式設計方式存取通用物件識別碼,請使用
Property Set Tag (Namespace)
GUID = {6ED8DA90-450B-101B-98DA-00AA003F1305}
Named Property ID: 3

[Outlook 物件程式庫尚未更新以公開此屬性。 下列資訊。 下列範例是程式碼範例,說明如何使用 CDO 1.21 物件程式庫或延伸 MAPI (需要 C + +) 存取通用物件識別碼的約會項目。

CDO 1.21
'Note that you must add a reference to “Microsoft CDO 1.21 Library”  (CDO.DLL) to run this code
Dim objCDO As MAPI.Session
Dim objAppt As MAPI.Message
Dim oAppt As Outlook.AppointmentItem
Dim objFields As MAPI.Fields
Dim Value

Dim propSet As String

Set objCDO = CreateObject("MAPI.Session")
objCDO.Logon "", "", False, False

'Assumes that active inspector is a calendar item
Set oAppt = objCDO.GetDefaultFolder(0).Messages.GetFirst()

'Use EntryID to get CDO Message
Set objAppt = objCDO.GetMessage(oAppt.EntryID)

'http://support.microsoft.com/?kbid=195656 says to swap around the GUID
'propSet = "6ED8DA90450B101B98DA00AA003F1305" '<-GUID we think we should be using
propSet = "90DAD86E0B451B1098DA00AA003F1305" '<-GUID that will really work

Set objFields = objAppt.Fields
Value = objFields.Item("0x0003", propSet).Value

MsgBox Value
延伸 MAPI
DEFINE_GUID(PSETID_Meeting, 
   0x6ED8DA90,0x450B,0x101B,0x98,0xDA,0x00,0xAA,0x00,0x3F,0x13,0x05); 
#define LID_GLOBAL_OBJID 3 

// This code assumes that lpMsg is an LPMESSAGE 
HRESULT hr = S_OK; 
ULONG ulVal = 0; 
LPSPropValue lpPropVal = NULL; 
LPSPropTagArray lpNamedPropTag = NULL; 

MAPINAMEID NamedID = {0}; 
LPMAPINAMEID lpNamedID = NULL; 

// Set up the request to GetIDsFromNames. 
NamedID.lpguid = (LPGUID) &PSETID_Meeting; 
NamedID.ulKind = MNID_ID; 
NamedID.Kind.lID = LID_GLOBAL_OBJID; 
lpNamedID = &NamedID; 

// Find the prop tag 
hr = lpMsg->GetIDsFromNames(1, &lpNamedID, NULL, &lpNamedPropTag); 

// Set our type to binary 
lpNamedPropTag->aulPropTag[0] = 
   CHANGE_PROP_TYPE(lpNamedPropTag->aulPropTag[0],PT_BINARY); 

// Get the value of the property. 
hr = lpMsg->GetProps(lpNamedPropTag ,0, &ulVal, &lpPropVal); 

// Do something with the ID here 

// Cleanup 
MAPIFreeBuffer(lpPropVal); 
MAPIFreeBuffer(lpNamedPropTag);

有關 CDO 1.21 物件程式庫的詳細資訊

CDO 1.21 物件程式庫已經更新,以處理這個新的設計為基礎的約會。設計變更併入伺服器端 CDO.DLL 隨附於 Exchange Server 2003 SP2。由 Outlook 或 Microsoft Office,就會安裝 CDO.DLL 的用戶端版本。第一個用戶端版本以包含這項變更是由 Microsoft Office 2003 SP2 安裝 [CDO.DLL。

關於 CDOEX 物件程式庫的詳細資訊

CDOEX 物件程式庫已經更新,以處理這個新的設計為基礎的新約會。CDOEX 可用只能在 Exchange 伺服器上。此外,更新的 CDOEX.DLL 併入 Exchange Server 2003 SP2。

Outlook 物件程式庫的相關細節

Outlook 物件程式庫提供新功能啟動 Office Outlook 2003 SP2 或更新版本。 這項變更也會包含在較新版本的 Outlook。

有關延伸 MAPI 細節

雖然您可以藉由使用延伸 MAPI 存取項目 ID,不支援使用延伸 MAPI 處理約會。 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
266353具名屬性的 Outlook 不支援的 MAPI 或 CDO

屬性

文章編號: 899919 - 上次校閱: 2007年10月25日 - 版次: 6.4
這篇文章中的資訊適用於:
  • Microsoft Office Outlook 2007
  • Microsoft Exchange Server 2007 Standard Edition
  • Microsoft Exchange Server 2007 Enterprise Edition
  • Microsoft Office Outlook 2003
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition
關鍵字:?
kbmt kbinfo KB899919 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:899919
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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