0

我正在为用 C++ 编写的现有应用程序实现 COM 接口。COM 接口用于从 VBScript 自动化应用程序。

我想通过 COM 接口调用的方法之一有一个参数,在 C++ 中,它有一个enum类型。我enum在 IDL 文件中定义了一个相应的类型,并oleview显示这些值已注册:

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

但是,当我在 VBScript 中传递这些值之一时,CPP 实现接收到的值始终为 0。我假设我没有使用正确的 VBScript 语法。直接传递一个整数值是有效的,传递一些随机的东西(比如ghfitgr)也会导致 0,这可能是 发生的事情MyValueB,等等。

我找到了一个enum.member应该使用的声明,即MyEnum.MyValue,但这会导致语法错误 ( object required: MyEnum)。我究竟做错了什么?

4

1 回答 1

1

后期绑定的 VBScript 不能/不会从 .dll 中提取这些信息,您得到的只是对象(通过 CreateObject())以及它们提供的内容。因此,通过使用Const定义具有体面名称的值,可以省去很多麻烦和黑客攻击。

澄清:

我的意思是: VBScript 代码中的常量

于 2012-12-16T13:31:11.533 回答