C++调用JS,JS调用C++
转载JS调用C++,通过设置DIID_HTMLDocumentEvents事件,来捕获HTMLWINDOW上的事件,再通过事件对象的get_srcElement得到事件源,从而得到指定元素对象,从而获取元素的信息得到脚本传过来的数据,来进行调用
还可以通过window对象的IDispatchEx接口来动态的增加一个元素,提供一个IDISPATCH接口给JS去调用
还可以通扩展IDocHostUIHandler接口来提供window.External来供脚本调用
这些利用也可以扩展到IActiveScript接口
1 hr = pdispexWindow->GetDispID(L"kws_checkVirus", fdexNameCaseSensitive, &kws_checkVirusId);
2
3 if (FAILED(hr))
4 {
5 hr = pdispexWindow->GetDispID(L"kws_checkVirus", fdexNameEnsure, &kws_checkVirusId);
6
7 if (FAILED(hr))
8 goto exit0;
9
10 IDispatch* pkws_checkVirus = new kws_checkVirus;
11 DISPPARAMS pParams = {0}, pParamsNo = {NULL, NULL, 0, 0};
12 VARIANT varkws_checkVirus;
13 DISPID dispkws_checkVirus = DISPATCH_PROPERTYPUT;
14 VariantInit(&varkws_checkVirus);
15 varkws_checkVirus.vt = VT_DISPATCH;
16 varkws_checkVirus.pdispVal = pkws_checkVirus;
17
18 pParams.rgvarg = &varkws_checkVirus;
19 pParams.rgdispidNamedArgs = &dispkws_checkVirus;
20 pParams.cArgs = 1;
21 pParams.cNamedArgs = 1;
22
23 hr = pdispexWindow->Invoke(
24 kws_checkVirusId,
25 IID_NULL,
26 LOCALE_SYSTEM_DEFAULT,
27 DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF,
28 &pParams,
29 NULL,
30 NULL,
31 NULL);
32 if (SUCCEEDED(hr))
33 hr = e_NEW;
34
35 }
C++调用JS通过IHTMLDocument的get_Script,然后再GetIdOfNames得ID,再INVOKE来调指定的函数,还可以调用execscript来执行脚本
上一篇:JS调用C++

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python调用c/c++库
Python以其简单的语法及众多第三方库的支持,使得运用非常广泛. 但是如何利用Python进ig 直接解压即...
windows swig ptyhon Python #include -
JNA调用C/C++动态库
Java程序使用JNA调用C/C++动态库。
JNA C++ Dll -
C语言如何调用C++库
介绍了如何在C项目中调用C++项目的接口和库
C++;C; 混便 -
c/c++/MFC 调用 js 函数代码
1 首先 .h 文件中定义: 2 3 CComPtr<IHTMLWindow2> m_sphtmlWnd; 4 CComPtr<IHTMLDocument2> m_spHtmlDoc; 5 6 7 8 //方法1 可以取得返回值。。。。。 9 10 //调用方法示例:stringArray为传入参数列表,getSum为js函
mysql javascript null delete function parameters -
C调用C++和C++调用C
文章目录1.C调用C++2.C++调用C1.C调用C++若C调用的是C++全部函数的代码将函数用exte
搜索引擎 算法 数据库 #include 动态库