3

現在、Add-in Expressを使用してOutlookアドインを開発していますが、MAPIプロパティを読み取るためにいくつかの純粋なMAPI関数に戻す必要があります。

このP/InvokeラッパーをHrGetOneProp関数に持つ:

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

IMAPIPropタイプのOutlook添付ファイルオブジェクトを最初のパラメーターとして関数に渡そうとしています。

私が現在失敗しているのは、そのオブジェクトをIntPtr関数に最初のパラメーターとして渡すことができるように、そのオブジェクトをに「変換」する方法です。使用しようとしましたが、構造体を渡さ、管理されていないCOMオブジェクトへの参照を渡すだけなMarshal.StructureToPtrので、明らかにこれは例外で失敗しました。

だから私の質問は:

HrGetOnePropCOMオブジェクトを渡してメソッドを正常に呼び出す方法は?

4

2 に答える 2

5

Marshal.GetIUnknownForObjectメソッドを使用します。

于 2012-09-20T07:50:27.073 に答える
2

私は、のいずれかMarshal.GetComInterfaceForObjectMarshal.GetIUnknownForObjectまたは Marshal.GetIDispatchForObject動作するはずだと信じています

于 2012-09-20T07:51:54.550 に答える