zoukankan      html  css  js  c++  java
  • 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即可!

    
    

      

  • 相关阅读:
    POJ 2253 Frogger
    POJ 2387
    codevs3981动态最大子段和(线段树)
    P3398仓鼠(LCA)
    codevs1036商务旅行(LCA)
    codevs3728联合权值(LCA)
    P3390矩阵快速幂
    codevs1574广义斐波那契数列
    POJ3070Fibonacci
    P3379最近公共祖先(LCA)
  • 原文地址:https://www.cnblogs.com/MakeView660/p/6520431.html
Copyright © 2011-2022 走看看