首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

vc调用js解决思路

2013-03-01 
vc调用js我写了个vc调用js的代码,程序编译的时候一直提示错误:1.\GetWeb.cpp(102) : error C2039: get_S

vc调用js
我写了个vc调用js的代码,程序编译的时候一直提示错误:1>.\GetWeb.cpp(102) : error C2039: 'get_Script' : is not a member of 'ATL::_NoAddRefReleaseOnCComPtr<T>'
程序代码如下:
bool CGetWebApp::GetJScript(CComPtr<IDispatch>& spScript)
{
CComPtr<IDispatch> m_spHtmlDoc;
HRESULT hr = m_spHtmlDoc->get_Script(&spScript);
ATLASSERT(SUCCEEDED(hr));
return SUCCEEDED(hr);
}

BOOL CGetWebApp::CallJScript(const CString strFunc, const CStringArray& paramArray, CComVariant* pVarResult)
{
    CComPtr<IDispatch> spScript;
    if (!GetJScript(spScript))
    {
        return FALSE;
    }
    CComBSTR bstrMember(strFunc);
    DISPID dispid = NULL;
    HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
    if(FAILED(hr))
    {
        return FALSE;
    }
    const int arraySize = paramArray.GetSize();
    DISPPARAMS dispparams;
    memset(&dispparams, 0, sizeof dispparams);
    dispparams.cArgs = arraySize;
    dispparams.rgvarg = new VARIANT[dispparams.cArgs];
    for( int i = 0; i < arraySize; i++)
    {
        CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); // back reading
        bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);
        dispparams.rgvarg[i].vt = VT_BSTR;
    }
    dispparams.cNamedArgs = 0;

    EXCEPINFO excepInfo;
    memset(&excepInfo, 0, sizeof excepInfo);
       CComVariant vaResult;
    UINT nArgErr = (UINT)-1;  // initialize to invalid arg
    
    hr=spScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);  //调用js函数

    delete [] dispparams.rgvarg;
    if(FAILED(hr))
    {
        return FALSE;
    }   
    *pVarResult = vaResult;
    return TRUE;


哪位大神能告诉我这到底是怎么回事,怎么解决啊
VC调用JS
[解决办法]
应该是这样吧
CComPtr<IHTMLDocument> m_spHtmlDoc;
[解决办法]
还有就是m_spHtmlDoc只是定义了,没有得到一个接口指针的实例,也不能用
[解决办法]
记得这种好像有现成的


MSScriptControl.dll
[解决办法]
invoke 应该是 ie 控件对象的成员吧

热点排行