Skip to main content
スキップしてメイン コンテンツへ
コンポーネント オートメーション
IDispatch::Invoke

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。 ディスパッチ関数 DispInvoke の IDispatch::Invoke の標準実装を提供します。

HRESULT Invoke(  
  DISPID  dispIdMember,      
  REFIID  riid,              
  LCID  lcid,                
  WORD  wFlags,              
  DISPPARAMS FAR*  pDispParams,  
  VARIANT FAR*  pVarResult,  
  EXCEPINFO FAR*  pExcepInfo,  
  unsigned int FAR*  puArgErr  
);
dispIdMember

メンバーを識別します。 ディスパッチ識別子を取得するのにには IDispatch::GetIDsOfNames またはオブジェクトのドキュメントを使用します。

riid

将来使用するために予約されています。 IID_NULL に設定する必要があります。

lcid

引数を解釈する対象のロケール コンテキスト。 lcid は 関数を GetIDsOfNames で使用され、オブジェクト、ロケールに固有の引数を解釈するための IDispatch::Invoke にも渡されます。

複数の言語をサポートしていないアプリケーションはこのパラメーターを無視できます。 詳細については、サポート複数の標準の数字形式言語 の ActiveX オブジェクトの公開を参照してください。

wFlags

のコンテキストを記述するフラグ 呼び出しを呼び出し、含めます。

説明

DISPATCH_METHOD

メンバーはメソッドとして呼び出されます。 プロパティに同じ名前がある場合このや DISPATCH_PROPERTYGET フラグの両方を設定することがあります。

DISPATCH_PROPERTYGET

メンバーは、プロパティまたはデータ メンバーとして取得されます。

DISPATCH_PROPERTYPUT

メンバーは、プロパティまたはデータ メンバーとして変更されます。

DISPATCH_PROPERTYPUTREF

メンバーは、値の代入ではなく、参照の割り当て、によって変更されます。 このフラグは、プロパティがオブジェクトへの参照を受け入れる場合にのみ有効です。

pDispParams

DISPPARAMS 構造体を引数の配列、名前付き引数の配列内の要素の数のカウントの引数 DISPID の配列を含むへのポインター。

pVarResult

結果がストアド、または、呼び出し元が結果予測しない場合は NULL に場所へのポインター。 DISPATCH_PROPERTYPUT または DISPATCH_PROPERTYPUTREF が指定されている場合、この引数は無視されます。

pExcepInfo

例外情報が格納される構造体へのポインター。 DISP_E_EXCEPTION が返された場合でこの構造体を入力する必要があります。 NULL の場合もあります。

puArgErr

エラーのある最初の引数の rgvarg 内のインデックス。 引数は pDispParams - に格納されます > rgvarg 1 番目の引数が配列内の最大のインデックスを持つ、逆の順序。 このパラメーターは、結果の戻り値は DISP_E_TYPEMISMATCH または DISP_E_PARAMNOTFOUND 場合にだけに返されます。 この引数を設定できる NULL にします。 詳細については、エラーを返すを参照してください。[次のコメント] セクション

返された HRESULT から取得される戻り値は、次のいずれかになります。

戻り値

説明

S_OK

成功。

DISP_E_BADPARAMCOUNT

DISPPARAMS に提供される要素の数は、メソッドまたはプロパティによって受け入れられる引数の数と異なるです。

DISP_E_BADVARTYPE

rgvarg の の引数の 1 つが有効なバリアント型ではありません。

DISP_E_EXCEPTION

アプリケーションは、例外を発生させる必要があります。 ここでは、pExcepInfo の で渡される構造で入力する必要があります。

DISP_E_MEMBERNOTFOUND

要求されたメンバーが存在しない、か起動 への呼び出しが、読み取り専用プロパティの値を設定ましょう。

DISP_E_NONAMEDARGS

この実装 IDispatch の名前付き引数サポートしません。

DISP_E_OVERFLOW

いずれかの rgvarg の で引数を指定した型にいない変換でしたなります。

DISP_E_PARAMNOTFOUND

DISPID パラメーターの 1 つのメソッドのパラメーターに対応しません。 この場合は、エラーを含む最初の引数に puArgErr の を設定する必要がありますされます。 プロパティを設定しようし、cNamedArgs の と、DISPPARAMS 構造の rgdispidNamedArgs の要素がない初期化エラー DISP_E_PARAMNOTFOUND 表示されます。

DISP_E_TYPEMISMATCH

1 つ以上の引数のない変換でした。 puArgErr パラメーターに、不適切な型を使用して最初のパラメーターの rgvarg 内のインデックスが返されます。

DISP_E_UNKNOWNINTERFACE

riid で渡されたインターフェイス識別子は IID_NULL ではありません。

DISP_E_UNKNOWNLCID

呼び出されるメンバーは、LCID に従って文字列引数を解釈し、LCID が認識されません。 LCID は引数を解釈する必要はありません、このエラーは返されません。

DISP_E_PARAMNOTOPTIONAL

必要なパラメーターが省略されています。

一般に、実装しないで呼び出し 直接。 代わりに、ディスパッチ インターフェイスを使用して作成関数 CreateStdDispatch DispInvoke をします。 詳細については、 の CreateStdDispatch、DispInvoke ActiveX オブジェクトの公開の IDispatch インターフェイス の作成を参照してください。

一部のアプリケーション固有の処理は、メンバーを呼び出す前に実行する場合、コードする必要があります、必要なアクションを実行してから、メンバーを呼び出す ITypeInfo::Invoke を呼び出します。 ITypeInfo::Invoke 機能には、IDispatch::Invoke 正確にようにします。 の IDispatch::Invoke の標準実装 CreateStdDispatch によって作成され への ITypeInfo::Invoke の DispInvoke 延期するには。

ActiveX クライアント IDispatch::Invoke 使用するかを取得およびプロパティの値を設定する ActiveX オブジェクトのメソッドを呼び出します。 dispIdMember 引数を呼び出すメンバーを識別します。 メンバーを識別する DISPID は、オブジェクトの実装によって定義されをオブジェクトのドキュメントを IDispatch::GetIDsOfNames 関数または ITypeInfo インターフェイスを使用して判断できます。

DISPATCH_PROPERTYPUT と DISPATCH_PROPERTYPUTREF IDispatch::Invoke() を使用すると、する特別の cNamedArgs の と、次に、DISPPARAMS 構造体の rgdispidNamedArgs の要素を初期化する必要が。

DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;

次の ActiveX オブジェクトを公開するコードを使用するアドレス開発者 ActiveX クライアントやその他の情報。 公開されたオブジェクトのユーザーが期待される動作をについて説明します。