Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- From: malcolm <malcolm@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 11 Dec 2008 10:19:00 -0800
Hi Dmitry, and thanks again as always for your help.
So, if I understand you correctly, I can get at these named properties by
calling GetFields, and passing a string in the form
"{00062002-0000-0000-C000-000000000046}0x8223".
So, in order to get those values, I am looking at a couple of sample
messages with OutlookSpy. I notice, though, that there might be two
properties, both marked with the same string. For example, for the property
'IsRecurring', in one message I see both this:
{00062002-0000-0000-C000-000000000046}0x8223
and this:
{6ED8DA90-450B-101B-98DA-00AA003F1305}0x5
Is one preferable to the other, more likely to be there, more likely always
to have the same ID, etc.?
What I'd like to be able to do is identify them somehow by the string
"IsRecurring", or find a canonical list somewhere that tells me what these
GUID/ID pairs are, so I am not relying on GUIDs and IDs that I have yanked
from a few arbitrary messages.
Is there some documentation someplace that lists these name/identifier
mappings for these standard named properties?
Thanks so much.
"Dmitry Streblechenko" wrote:
That is to be expected - you must use GetIDsFromNames instead of hardcoding.
the tags.
You will need to pass the appropriate GUID and id (integere in most cases)
to GetIDsFromNames and "or" the returned tag with teh appropriate type (e.g.
PT_LONG).
You can see GUIDs in ids in OutlookSpy - click IMessage, select the
property, see the GUID and id on tre rigth hand side in teh "Named property"
box.
See http://www.dimastr.com/redemption/utils.htm#named-props
If you are using RDO object, you can skip the GetIDsFromNames call and pass
the property name as a DASL formatted string instead of an integer -
http://www.dimastr.com/redemption/rdo/MAPIProp.htm#properties - Redemption
will GetIDsFromNames internally.
--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
"malcolm" <malcolm@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:2739B185-1129-4FF3-9B8C-D849982A3F51@xxxxxxxxxxxxxxxx
Well, the plot has thickened. It appears that many of the properties I
want
to read: IsRecurring, Location, Required/OptionalAttendees, etc., are
custom
tags - and they don't even have a consistent tag (for example, in one
message
'IsRecurring' is 0x8028, while in another it's 0x81EB). In fact, some
messages have TWO named properties both called 'IsRecurring'.
So what I guess I need to do is look for the string (e.g. 'IsRecurring' )
that identifies the tag. I'm using Redemption, so I've tried getting all
the
tags with HrGetPropList, then iterating over the list and calling
GetNamesFromIDs for each property tag. That gives me an INamedProperty
interface, which exposes a GUID and an ID in the form of a variant. But
the
'IsRecurring', etc., strings I'm looking for are nowhere to be found; the
variant is yet another numerical identifier. Is there some lookup table
somewhere that maps these IDs onto the strings? Or am I barking up the
wrong
tree?
"malcolm" wrote:
Hi Dmitry,
I guess that's what I'll do! Thanks.
"malcolm" wrote:
Hi all,
I am replacing some old property-extraction code that used the Outlook
API
with new code that uses Redemption, and I am trying to get various
properties
from a MeetingResponsePositive .msg file.
In the old system, we would get a dispatch pointer from a loose .msg by
calling CreateItemFromTemplate(). The code then attaches a temporary
Outlook::_MailItem to the returned dispatch, and calls GetClass to find
the
classID. For a MeetingResponsePositive item, this returns, say,
olMeetingResponsePositive (that's 56). We would attach the dispatch to
an
Outlook::_AppointmentItem object, and were able to read the Appointment
properties via GetStart(), etc.
In the new code, we get the dispatch pointer from the .msg using
Redemption::IRDOSession::GetMessageFromMsgFile(). If we use
Redemption::IRDOAppointment to wrap the dispatch pointer, we can't call
the
GetStart(), etc. properties (MEMBER_NOT_FOUND).
I thought I would get the associated Appointment dispatch by calling
GetAssociatedAppointment() on the IRDO::MeetingItem object, but if I
call it
with (TRUE) this creates a meeting in Outlook's default calendar, which
I
don't want to do, and if I call it with (FALSE), I get nothing back at
all,
because the meeting isn't already in the calendar.
I suppose I can just read the properties I want directly from the MAPI
table, but s there anything else I can do?
Thanks very much,
Malcolm
- Follow-Ups:
- Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- From: Dan Mitchell
- Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- From: Dmitry Streblechenko
- Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- From: malcolm
- Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- References:
- Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Pos .m
- From: malcolm
- RE: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Pos .m
- From: malcolm
- RE: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- From: malcolm
- Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- From: Dmitry Streblechenko
- Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Pos .m
- Prev by Date: Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- Next by Date: Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- Previous by thread: Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- Next by thread: Re: Getting Start/End time, etc. from IPM.Schedule.Meeting.Resp.Po
- Index(es):
Relevant Pages
|
Loading