【发布时间】:2015-10-12 01:49:03
【问题描述】:
出于某种原因,我必须在我的代码中使用 COM 控件。我想调用 COM 控件导出的方法。
idl 文件:
methods:
[id(1)] boolean Open(BSTR filepath, BSTR rootname);
cpp 文件:
VARIANT pVarResult;
EXCEPTINFO pExcepInfo;
unsigned int puArgErr;
DISPPARAMS pParams;
memset(&pParams, 0, sizeof(DISPPARAMS));
VARIANTARG param[2];
param[0].vt = VT_BSTR;
param[0].bstrVar = filepath.AllocSysString();
param[1].vt = VT_BSTR;
param[1].bstrVar = rootname.AllocSysString();
pParams.rgvars = param;
pParams.cArgs = 2;
hResult = pDispatch->Invoke(id, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD, &pParams, &pVarResult, &pExcepInfo, &puArgErr);
我收到一条错误消息“参数数量无效”。我的代码哪里错了? 如何将两个字符串参数传递给 com 控件中定义的接口?这似乎是不可能的。
编辑 1:添加更多退货信息。好像没什么用。
pVarResult = NULL;
pExcepInfo.wcode = 52424;
puArgErr = 1;
【问题讨论】:
-
尝试为结果值 (pVarResult) 提供一个变体。
-
@JonathanPotter pVarResult 在调用后为空