Get parent message (original) from the response created by Reply-All/Reply/Forward

  • Thread starter Thread starter Sanjay
  • Start date Start date
S

Sanjay

Hi guys..
I have an Outlook plugin for Outlook 2003 SP2 + VS2005 + C#. The
plugin adds extended properties to each message. These properties need
to be inherited by the responses/forwards and so how do I get the
original message from the Response?

I am using the outlook wrapper and the IOleWindow interface to store
instances of open inspectors. But the IOleWindow interface does not
return a window handle when outlook is configured to use word as the
email editor. Because of this I cannot use the Item_Forward event to
save the inhereted property to the response.

There has got to be a way to determine the parent message from the
response. Please help.

Sanjay
 
When WordMail is running the window is an instance of "OpusApp" and the
actual Outlook message is a subwindow under that. It's exact name depends on
the Outlook version. MSWord.exe is being subclassed as an editor in that
case.

You can always get ConversationTopic and ConversationIndex from the response
message. ConversationTopic would remain the same as the original message and
ConversationIndex would be longer from the new Windows time struct appended
to the previous ConversationIndex. That would allow you to find the original
message. If you store the original's parent folder you know where to look.
 
Thanks for the quick reply Ken.

IOleWindow seems to work in OL2007 even though it is supposed to be
using word as email editor. I guess it must be implemented differently
from OL2003.

Is there a quick lookup I can do using the conversation index or do I
have to iterate through the contents of the folder to get to the
original message?
 
Outlook 2007 uses a Word.dll and not a subclassing of MSWord.exe, it's
entirely owned by Outlook and not an instance of a Word window, even though
you use Word code to access things inside WordEditor (the Document object).

I forget offhand how long the struct is that's added to ConversationIndex
for each new message in a thread, I want to say 20 bytes but it's been a
while since I worked with that. But you can determine that empirically by
comparing the length of that property in one message and then the next in
the same thread. If you subtract that length from the new ConversationIndex
using a substring function that would give you the previous
ConversationIndex value.

Unfortunately you can't use ConversationIndex in a filter or restriction,
but you can use ConversationTopic in a filter or restriction to narrow the
list of possibilities down significantly.
 
Back
Top