How to get Microsoft.Office.Interop.Outlook.TaskItem from the IUnknown (C#)

G

Godandag

Hi all.

In other words, how to implement the method GetTaskFromIntPtr in the
code below?

using Outlook = Microsoft.Office.Interop.Outlook;

....

public void Method1(Outlook.TaskItem task)
{
IntPtr ptr = Marshal.GetIUnknownForObject(task.MAPIOBJECT);
Outlook.TaskItem task1 = GetTaskFromIntPtr(ptr); //
GetTaskFromIntPtr - ?
}

public Outlook.TaskItem GetTaskFromIntPtr(IntPtr)
{
????
}
 
K

Ken Slovak - [MVP - Outlook]

If you already have a task item why are you going through hoops to get
another instance of the same task item that way? Why not just copy the
passed task item or create a new one or use NameSpace.GetItemFromID() to
retrieve another instance of the task item if you can get its EntryID
property?
 
G

Godandag

If you already have a task item why are you going through hoops to get
another instance of the same task item that way? Why not just copy the
passed task item or create a new one or use NameSpace.GetItemFromID() to
retrieve another instance of the task item if you can get its EntryID
property?

--
Ken Slovak
[MVP - Outlook]http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Optionshttp://www.slovaktech.com/products.htm


In other words, how to implement the method GetTaskFromIntPtr in the
code below?
using Outlook = Microsoft.Office.Interop.Outlook;

public void Method1(Outlook.TaskItem task)
{
IntPtr ptr = Marshal.GetIUnknownForObject(task.MAPIOBJECT);
Outlook.TaskItem task1 = GetTaskFromIntPtr(ptr); //
GetTaskFromIntPtr - ?
}
public Outlook.TaskItem GetTaskFromIntPtr(IntPtr)
{
????
}

Hello Ken!
It is only sample. Actually, I'm trying to get updated TaskItem from
TaskRequestUpdateItem. I assume, that TaskItem is in the
olEmbeddeditem attachment of TaskRequestUpdateItem. The sequence of
operations is:

1) Get the attachment of TaskRequestUpdateItem
2) Get the PR_ATTACH_DATA_OBJ of attachment (using Extended MAPI,
IMAPIProp.OpenProperty) - so I have an IntPtr of the attachment
object. I am almost assured that there is a TaskItem. But how to wrap
it with Outlook.TaskItem interface I don't know.

I need exactly OOM Outlook.TaskItem interface (not IMessage etc.).
 
G

Godandag

I know, this concrete problem (get TaskRequestUpdateItem attachment as
TaskItem) can be solved like this:
Outlook.TaskRequestUpdateItem item;
....
Outlook.Attachments atts = item.Attachments;
Outlook.Attachment att = atts[1];

att.SaveAsFile("F:\\111.oft");
Outlook.TaskItem task =
(Outlook.TaskItem)ThisApplication.OlApp.CreateItemFromTemplate("F:\
\111.oft", Type.Missing);

but I don't like this way for some reason.
The way with wrapping IUnknown with the OOM interface is pleasant to
me much more.
 
K

Ken Slovak - [MVP - Outlook]

That's the way I'd do it, using a save to file.

You might want to post in the microsoft.public.win32.programmer.messaging
group with this question. It's not strictly a MAPI question, which is what
the group is for, but it's sufficiently close that the MAPI experts there
may be able to help better than we can here.
 
G

Godandag

That's the way I'd do it, using a save to file.

You might want to post in the microsoft.public.win32.programmer.messaging
group with this question. It's not strictly a MAPI question, which is what
the group is for, but it's sufficiently close that the MAPI experts there
may be able to help better than we can here.

--
Ken Slovak
[MVP - Outlook]http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Optionshttp://www.slovaktech.com/products.htm


I know, this concrete problem (get TaskRequestUpdateItem attachment as
TaskItem) can be solved like this:
Outlook.TaskRequestUpdateItem item;
....
Outlook.Attachments atts = item.Attachments;
Outlook.Attachment att = atts[1];
att.SaveAsFile("F:\\111.oft");
Outlook.TaskItem task =
(Outlook.TaskItem)ThisApplication.OlApp.CreateItemFromTemplate("F:\
\111.oft", Type.Missing);
but I don't like this way for some reason.
The way with wrapping IUnknown with the OOM interface is pleasant to
me much more.

Thank you, Ken.
I'll try to post in the microsoft.public.win32.programmer.messaging
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top