IDispatch::Invoke メソッド (oaidl.h)
オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。 ディスパッチ関数 DispInvoke は、Invoke の標準実装を提供 します。
構文
HRESULT Invoke(
[in] DISPID dispIdMember,
[in] REFIID riid,
[in] LCID lcid,
[in] WORD wFlags,
[in, out] DISPPARAMS *pDispParams,
[out] VARIANT *pVarResult,
[out] EXCEPINFO *pExcepInfo,
[out] UINT *puArgErr
);
パラメーター
[in] dispIdMember
メンバーを識別します。 ディスパッチ識別子を取得するには、 GetIDsOfNames またはオブジェクトのドキュメントを使用します。
[in] riid
将来使用するために予約されています。 IID_NULL にする必要があります。
[in] lcid
引数を解釈する対象のロケール コンテキスト。 lcid は GetIDsOfNames 関数によって使用され、オブジェクトがロケールに固有の引数を解釈できるように Invoke にも渡されます。
複数の各国語をサポートしていないアプリケーションでは、このパラメーターを無視できます。 詳細については、「 複数の各国語のサポート 」および 「ActiveX オブジェクトの公開」を参照してください。
[in] wFlags
Invoke 呼び 出 しのコンテキストを記述するフラグ。
[in, out] pDispParams
引数の配列、名前付き引数の引数 DISPID の配列、および配列内の要素数のカウントを含む DISPPARAMS 構造体へのポインター。
[out] pVarResult
結果が格納される場所へのポインター。呼び出し元が結果を予期しない場合は NULL。 DISPATCH_PROPERTYPUTまたはDISPATCH_PROPERTYPUTREFが指定されている場合、この引数は無視されます。
[out] pExcepInfo
例外情報を格納する構造体へのポインター。 DISP_E_EXCEPTIONが返される場合は、この構造体を入力する必要があります。 NULL にすることができます。
[out] puArgErr
エラーが発生した最初の引数の rgvarg 内のインデックス。 引数は pDispParams-rgvarg> に逆の順序で格納されるため、最初の引数は配列内で最も高いインデックスを持つ引数です。 このパラメーターは、結果の戻り値がDISP_E_TYPEMISMATCHまたはDISP_E_PARAMNOTFOUND場合にのみ返されます。 この引数は null に設定できます。 詳細については、「 エラーを返す」を参照してください。
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
DISPPARAMS に提供される要素の数は、メソッドまたはプロパティで受け入れられる引数の数とは異なります。 |
|
DISPPARAMS の引数の 1 つが有効なバリアント型ではありません。 |
|
アプリケーションで例外を発生させる必要があります。 この場合、 pexcepinfo で渡された構造体を入力する必要があります。 |
|
要求されたメンバーが存在しません。 |
|
この IDispatch の実装では、名前付き引数はサポートされていません。 |
|
DISPPARAMS の引数の 1 つを指定した型に強制することはできませんでした。 |
|
パラメーター ID の 1 つが、 メソッドのパラメーターに対応していません。 この場合、 puArgErr はエラーを含む最初の引数に設定されます。 |
|
1 つ以上の引数を強制できませんでした。 rgvarg 内の型が正しくない最初のパラメーターのインデックスは、 puArgErr で返されます。 |
|
riid で渡されたインターフェイス識別子はIID_NULLされていません。 |
|
呼び出されるメンバーは、LCID に従って文字列引数を解釈し、LCID は認識されません。 引数を解釈するために LCID が必要ない場合は、このエラーを返さないでください |
|
必須パラメーターが省略されました。 |
注釈
一般に、 Invoke を直接実装しないでください。 代わりに、ディスパッチ インターフェイスを使用して、 関数 CreateStdDispatch と DispInvoke を作成します。 詳細については、 CreateStdDispatch、 DispInvoke、 IDispatch インターフェイスの作成 、 および ActiveX オブジェクトの公開に関するページを参照してください。
メンバーを呼び出す前にアプリケーション固有の処理を実行する必要がある場合、コードは必要なアクションを実行してから 、ITypeInfo::Invoke を呼び出してメンバーを呼び出す必要があります。 ITypeInfo::Invoke は、Invoke とまったく同じように機能 します。 CreateStdDispatch と DispInvoke によって作成された Invoke の標準実装は、ITypeInfo::Invoke に遅延します。
ActiveX クライアントでは、 Invoke を使用してプロパティの値を取得および設定するか、ActiveX オブジェクトのメソッドを呼び出す必要があります。 dispIdMember 引数は、呼び出すメンバーを識別します。 メンバーを識別する DISPID は、オブジェクトの実装者によって定義され、オブジェクトのドキュメント、 IDispatch::GetIDsOfNames 関数、または ITypeInfo インターフェイスを使用して決定できます。
DISPATCH_PROPERTYPUTまたはDISPATCH_PROPERTYPUTREFで IDispatch::Invoke() を使用する場合は、DISPPARAMS 構造体の cNamedArgs 要素と rgdispidNamedArgs 要素を次のように特別に初期化する必要があります。
DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;
以下の情報は、ActiveX クライアントの開発者や、コードを使用して ActiveX オブジェクトを公開する他のユーザーに対応しています。 公開されたオブジェクトのユーザーが期待する動作について説明します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | oaidl.h |