码迷,mamicode.com
首页 > 编程语言 > 详细

VC++ : GetIDsOfNames 调用失败,获取的dispid为-1

时间:2017-03-08 17:44:33      阅读:739      评论:0      收藏:0      [点我收藏+]

标签:pat   自己的   pid   需要   tla   ror   result   system   isp   

  今天调试自己的程序,需要调用一个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

标签:pat   自己的   pid   需要   tla   ror   result   system   isp   

原文地址:http://www.cnblogs.com/MakeView660/p/6520431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!