开发人员有关日历的更改,在 Outlook 2003 Service Pack 2,Exchange Server 2003 Service Pack 2,以及更高版本的 Exchange 服务器和信息的 Outlook

文章翻译 文章翻译
文章编号: 899919 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

简介

本文介绍了 Microsoft Office Outlook 2003 Service Pack 2 (SP2) 和更高版本的服务包、 Microsoft Exchange Server 2003 Service Pack 2 (SP2) 和更高版本的 Exchange 服务器以及 Outlook 如何处理会议的更改。此新的设计应解决引入的 Outlook 2003 在缓存模式下消失会议方案。

新的设计不具有在最终用户的显示效果。但是,新的设计可能会影响与在 Outlook 中的日历功能集成的自定义解决方案。本文介绍了新的设计,以便根据需要自定义解决方案的开发人员可以更新这些解决方案。

新的设计工作,如下所示。当用户接受或暂时接受会议要求中或在日历项从一个会议从日历删除现有的日历项目。此外,为已删除的项创建的日历项目的副本。 因此,新的日历项目都有一个不同于旧日历项目的项目标识的项目标识。

如果它们旨在假定为日历项目的条目 ID 保持一致,或只有很少更改的方式,自定义解决方案可能会受到不良影响。

默认的新会议接受行为在 Outlook 2003 SP2 和更高版本中启用。但是,还可以禁用或重新启用 Outlook 客户端上使用以下注册表数据的行为:
密钥: HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Options\Calendar
DWORD: DisableMeetingRegeneration
: 1 = 还原为 SP2 之前的行为 ; 0 = 使用新的 SP2 行为
注意此注册表数据没有 Outlook 2003 将使用默认 SP2 或更高版本的服务包行为。

在 Outlook 2007 中此注册表项是在 Office 部署工具中可用。有关详细的信息查看部署文档。若要这样做,请访问下面的 Microsoft 网站:
http://office.microsoft.com

更多信息

有关基于 MAPI 的条目标识的背景

Outlook 将保存在一个文件夹中的某个项目时, 该项目分配在驻留该项目中存储的条目 ID 值。存储区的示例包括: Microsoft Exchange Server 邮箱、 Exchange 服务器公用文件夹存储中,和个人文件夹 (.pst) 文件。

保证条目 id 都是唯一在存储区中。但是,条目标识可以更改在某些情形下。将项目移动到另一个文件夹或不同的存储区时,将包含这些方案。当用户在 Outlook 中执行某些功能时,还可以更改条目 id。这些功能包括导出,然后 reimporting 数据。新方法来处理日历在 Outlook 2003 SP2 中的项和更高版本服务包和在 Exchange Server 2003 SP2 时的另一个示例可以更改的项目标识。

条目标识有关的详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/ms531268.aspx
有各种 api 条目标识处理该支持。这些 api 包括扩展 MAPI、 CDO 1.21 对象库中和 Outlook 对象库。

这种新的设计会如何影响解决方案

跟踪在外部数据库中的 Outlook 数据的一些与 Outlook 集成的解决方案。其他解决方案可能会存储一个项目的项目标识为提供链接的功能的另一个项目中的某个字段使用自定义 Outlook 窗体。在这些的方案中可以使用如 GetItemFromID 方法的方法 Outlook 对象库中直接访问项根据其条目 id。

但是,要查找项目中使用的项目标识可能变得不可靠 SP2 之后,或者安装更高版本的服务包。因此,您有以下选项:
  1. 更新您的代码的项目标识以备日历项将会更改这一事实。
  2. 使用全局对象 id。这是保持不变的整个生存期内的日历项目的标识符。
作为一名开发人员您应考虑这一新的设计在 Outlook 行为设计或更新与 Outlook 日历集成的自定义解决方案时。

全局对象标识

全局对象标识为 MAPI 属性 Outlook 用来匹配会议更新和与日历上特定会议的响应。全局对象标识的日历项目的所有副本之间是相同的。在 Microsoft Office Outlook 2003 Service Pack 1 (SP1) 和早期版本的组织者第一次发送会议要求时生成全局对象标识。因此,这些较早版本的 Outlook 不会生成一个全局对象标识为未发送的会议或约会有没有收件人。

在 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 对象库或 (需要 c + +) 的扩展 MAPI 访问全局对象 ID 在约会项目的代码示例。

1.21 CDO
'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 或 Office 安装 CDO.DLL 的客户端的版本。第一个的客户端的版本,以包括此更改是通过 Microsoft Office 2003 SP2 安装 CDO.DLL。

有关 CDOEX 对象库的详细信息

CDOEX 对象库的更新以便处理基于这一新设计的新约会。可以在 Exchange 服务器上只使用 CDOEX。此外,更新的 CDOEX.DLL 包含在 Exchange Server 2003 SP2。

有关 Outlook 对象库的详细信息

Outlook 对象库提供了在启动 Office Outlook 2003 SP2 或更高版本的新功能。 在更高版本的 Outlook 中也包含此更改。

有关扩展 MAPI 细节

虽然您可以通过使用扩展 MAPI 访问条目标识,则不支持使用扩展 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
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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