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 控件对象的成员吧