首页 > 代码库 > VC++ : GetIDsOfNames 调用失败,获取的dispid为-1
VC++ : GetIDsOfNames 调用失败,获取的dispid为-1
今天调试自己的程序,需要调用一个COM组件中的方法,利用GetIDsOfNames获取调用函数对象的DISPID。
GetIDsOfNames:
把COM接口的方法名字和参数(可选)映射成一组DISPID。
GetIDsOfNames(
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID *rgDispId)
代码片段如下:
DISPID PropertyID[1] = {0}; BSTR PropName[1]; PropName[0] = SysAllocString(L"ExtractString"); HRESULT hResult = lpDispatch->GetIDsOfNames(IID_NULL, PropName, 3, LOCALE_SYSTEM_DEFAULT, PropertyID); DWORD dRet = GetLastError();
运行结果:PropertyID 为 -1,GetLastError返回14007
查了查资料,终于找到原因了:COM组件未注册的缘故!
regsvr32 *.ocx即可!
VC++ : GetIDsOfNames 调用失败,获取的dispid为-1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。