0

在使用 MAPI 进行一些工作期间,我发现一些约会的结果非常奇怪,例如:

标签:0x00600040 类型:PT_SYSTIME 属性名称:PR_START_DATE、PidTagStartDate DASL:http: //schemas.microsoft.com/mapi/proptag/0x00600040 12:00:00 01.11.2012

标签:0x00610040 类型:PT_SYSTIME 属性名称:PR_END_DATE,PidTagEndDate DASL:http: //schemas.microsoft.com/mapi/proptag/0x00610040 02:30:00 01.11.2012

其中 EndDate 小于 StartDate 或 EndDate 与 Outlook 日历中显示的不同。

约会和会议对象协议规范说 PidTagEndDate 包含约会结束的日期和时间。但似乎有时它包含长度(上例中为 2:30)。最尴尬的是 Outlook 在日历中正确显示日期,所以我需要一些方法来正确解释从 MAPI 获得的日期。

4

2 回答 2

0

不确定原因,但在我的情况下,PidTagEndDate (PR_END_DATE) 在某些约会上不正确,为了获得正确的值,必须使用其他规范属性(如果当然存在 - 它并不总是设置)PidLidAppointmentEndWhole根据规范PidTagEndDate 必须相等,但似乎并不总是如此。

于 2012-11-21T15:53:06.127 回答
0

尝试这样做

LPSPropTagArray lppPropTags;
ULONG ulPropCount;
LPSPropValue pProp;
SYSTEMTIME& tmEnd;


HRESULT hr=m_appointment->GetProps(lppPropTags, MAPI_UNICODE, &ulPropCount, &pProp);
MAPIFreeBuffer(lppPropTags);

FILETIME tmLocal;
FileTimeToLocalFileTime(&pProp->Value.ft, &tmLocal);
FileTimeToSystemTime(&tmLocal, &tmStart);

tmLocal 变量将包含结束时间

于 2012-11-16T13:12:18.113 回答