目前使用Add-in Express开发Outlook加载项,我必须恢复一些纯MAPI函数来读取MAPI属性。
将此P / Invoke包装器放到HrGetOneProp
function:
[DllImport(@"MAPI32.DLL")]
static extern int HrGetOneProp(IntPtr pmp, uint ulPropTag, out IntPtr ppProp);
我正在尝试将类型为IMAPIProp
的Outlook附件对象作为该函数的第一个参数传递。
我目前失败的是如何将该对象“转换”为IntPtr
,以便我可以将其作为第一个参数传递给函数。我曾尝试使用Marshal.StructureToPtr
,但很明显这种情况因异常而失败,因为我不传递结构,而只是对非托管COM对象的引用。
所以我的问题是:
如何通过传递COM对象成功调用HrGetOneProp
方法?
答案 0 :(得分:5)
答案 1 :(得分:2)
我相信Marshal.GetComInterfaceForObject
,Marshal.GetIUnknownForObject
或Marshal.GetIDispatchForObject
中的任何一个都应该有效