0

C++で記述された既存のアプリケーションにCOMインターフェイスを実装しています。COMインターフェイスは、VBScriptからアプリケーションを自動化するために使用されます。

COMインターフェイスを介して呼び出したいメソッドの1つに、C++ではenum型を持つパラメーターがあります。enumIDLファイルで対応するタイプを定義しoleview、値が登録されていることを示しています。

// Copied from type library viewer    
typedef enum
{
   MyValueA = 0,
   MyValueB = 1,
   MyValueC = 2
} MyEnum;

ただし、これらの値の1つをVBScriptに渡すと、CPP実装によって受信される値は常に0になります。正しいVBScript構文を使用していないと思います。整数値を渡すことは直接機能し、ランダムなもの(のようなghfitgr)を渡すことも0になります。これは、おそらく何が起こっているかMyValueBなどです。

enum.member使用する必要のあるクレームを見つけました。これはですがMyEnum.MyValue、構文エラー(object required: MyEnum)が発生します。私は何が間違っているのですか?

4

1 に答える 1

1

レイトバインドVBScriptは、.dllからこれらの情報を取得できません/取得しません。取得するのはオブジェクト(CreateObject()による)とそれらが提供するものだけです。したがって、 Constを使用して適切な名前で値を定義することにより、多くの面倒な作業やハッキングを回避できます。

明確にするために:

つまり、VBScriptコードのConstです。

于 2012-12-16T13:31:11.533 に答える