在VBScript中使用类型库中的枚举

时间:2012-12-16 12:18:39

标签: vbscript enums automation idl

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

我想通过COM接口调用的方法之一有一个参数,在C ++中有一个enum类型。我在IDL文件中定义了相应的enum类型,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)。我做错了什么?

1 个答案:

答案 0 :(得分:0)

Late-bindng VBScript不能/不会从.dll中获取这些信息,你得到的只是对象(通过CreateObject())以及它们提供的内容。因此,为自己节省了很多麻烦和麻烦。使用 Const 来定义具有正确名称的值。

澄清:

我的意思是:VBScript代码中的 Const