c/c++/MFC 调用 js 函数代码
2014-06-09 11:50
489 查看
调用函数代码和示例 1 首先 .h 文件中定义: CComPtr<IHTMLWindow2> m_sphtmlWnd; CComPtr<IHTMLDocument2> m_spHtmlDoc; //方法1 可以取得返回值。。。。。 //调用方法示例:stringArray为传入参数列表,getSum为js函数,pVarResult 为返回值 /* CStringArray stringArray; stringArray.RemoveAll(); stringArray.SetSize(5); stringArray[0].Format(L"%d",m_poiStart.x); stringArray[1].Format(L"%d",m_poiStart.y); stringArray[2].Format(L"%d",m_poiEnd.x); stringArray[3].Format(L"%d",m_poiEnd.y); stringArray[4].Format(L"%d",a + 1); CComVariant pVarResult = CallJScript(L"getSum", stringArray);*/ bool Cems_mysql_appView::GetJScript(CComPtr<IDispatch>& spDisp) { m_spHtmlDoc = (IHTMLDocument2*)(GetHtmlDocument()); if(m_spHtmlDoc == NULL) { return false; } HRESULT hr = m_spHtmlDoc->get_Script(&spDisp); ATLASSERT(SUCCEEDED(hr)); return SUCCEEDED(hr); } CComVariant Cems_mysql_appView::CallJScript(const CString strFunc,const CStringArray& paramArray) { //Getting IDispatch for Java Script objects CComPtr<IDispatch> spScript; if(!GetJScript(spScript)) { return false; } //Find dispid for given function in the object 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(); //Putting parameters DISPPARAMS dispparams; memset(&dispparams, 0, sizeof dispparams); dispparams.cArgs = arraySize; dispparams.rgvarg = new VARIANT[dispparams.cArgs]; dispparams.cNamedArgs = 0; 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; } EXCEPINFO excepInfo; memset(&excepInfo, 0, sizeof excepInfo); CComVariant vaResult; UINT nArgErr = (UINT)-1; // initialize to invalid arg //Call JavaScript function hr = spScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr); delete [] dispparams.rgvarg; if(FAILED(hr)) { return false; } return vaResult; } //方法2 /*调用方法,不必多说。 CString str; str.Format(L"getSum(%d,%d,%d,%d,%d)",m_poiStart.x,m_poiStart.y,m_poiEnd.x,m_poiEnd.y,a+1); ExecScript(str); */ HRESULT Cems_mysql_appView::ExecScript(CString strjs) { HRESULT hr; m_spHtmlDoc = (IHTMLDocument2*)(GetHtmlDocument()); if(m_sphtmlWnd == NULL) { hr = m_spHtmlDoc->get_parentWindow(&m_sphtmlWnd);//获取脚本指针 } CComBSTR bstrjs = strjs.AllocSysString(); CComBSTR bstrlan = SysAllocString(L"javascript"); VARIANT varRet; hr = m_sphtmlWnd->execScript(bstrjs, bstrlan, &varRet); //m_sphtmlWnd = NULL; return 1; }
相关文章推荐
- c/c++/MFC 调用 js 函数代码(自家用)
- c/c++/MFC 调用 js 函数代码
- c/c++/MFC 调用 js 函数代码
- c/c++/MFC 调用 js 函数代码
- C++反汇编代码分析--函数调用
- js下函数般调用正则的方法附代码
- js调用gecko c++代码
- C# 调用Dll中非托管C++代码时,函数参数的类型对照
- C#winform后台代码与HTML内JS脚本函数相互调用
- C++反汇编代码分析——函数调用
- 如何在页面调用JS函数的代码
- 函数调用,C# 调用Dll中非托管C++代码时,函数参数的类型对照
- C#代码调用js函数,js函数中的document.getElementById("对象ID")得null值解决办法
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
- C++反汇编代码分析--函数调用
- VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)
- C++反汇编代码分析--函数调用
- C++反汇编代码分析--函数调用
- C++如何调用JS函数
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)