3

目前正在使用 Add-in Express 开发 Outlook 加载项,我必须恢复为一些纯 MAPI 函数来读取 MAPI 属性。

将这个 P/Invoke 包装器添加到HrGetOneProp函数中:

[DllImport(@"MAPI32.DLL")]
static extern int HrGetOneProp(IntPtr pmp, uint ulPropTag, out IntPtr ppProp);

我正在尝试将类型的 Outlook 附件对象IMAPIProp作为第一个参数传递给函数。

我目前失败的是如何将该对象“转换”为一个IntPtr,以便我可以将它作为第一个参数传递给函数。我试过使用Marshal.StructureToPtr,但显然这失败了一个例外,因为我没有传递一个结构,而只是一个对非托管 COM 对象的引用。

所以我的问题是:

如何HrGetOneProp通过传递 COM 对象成功调用方法?

4

2 回答 2

5

您想使用Marshal.GetIUnknownForObject 方法

于 2012-09-20T07:50:27.073 回答
2

我相信任何一个或 Marshal.GetComInterfaceForObject应该工作Marshal.GetIUnknownForObjectMarshal.GetIDispatchForObject

于 2012-09-20T07:51:54.550 回答