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カレンダーに表示されているものとはまったく異なります。

Appointment and Meeting Object Protocol Specificationには、PidTagEndDateに予定の終了日時が含まれていると記載されています。ただし、長さが含まれている場合もあるようです(上記の例では2:30)。これについて最も恥ずかしいのは、Outlookがカレンダーに日付を正しく表示することです。そのため、MAPIから取得した日付を正しく解釈する方法が必要です。

4

2 に答える 2

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 に答える
0

理由はわかりませんが、私の場合、一部の予定ではPidTagEndDate(PR_END_DATE)が正しくありません。正しい値を取得するには、他の正規のプロパティを使用する必要があります(もちろん存在する場合-常に設定されているわけではありません)PidLidAppointmentEndWhole PidTagEndDateは等しくなければなりませんが、常に真であるとは限りません。

于 2012-11-21T15:53:06.127 に答える