如何实现IE Trident引擎下C与JavaScript的互调功能?

摘要:我们知道实现C++和Javascript通讯有下表5种接口: 引擎编写语言API接口C、C++与JavaScript交互(变量、函数、类)vc2005编译静态库的大小示
我们知道实现C++和Javascript通讯有下表5种接口: 引擎 编写语言 API接口 C、C++与JavaScript交互(变量、函数、类) vc2005编译静态库的大小 示例EXE的大小 执行、解析JavaScript的速度 Google V8 C++ C++ 可以 23.1M 1.1M 最快 Firefox3.5以前 SpiderMonkey C C 可以 1.3M 500K 慢 Firefox高版本SpiderMonkey C++ C 可以 15.3M 1.7M 一般 Webkit JavaScriptCore C++ C 可以 26.2M 1.4M 一般 IE 未知 COM 可以 未知 100K(没有链接库) 一般 IE的Trident引擎是非开源的,微软JavaScript引擎也是非开源的。微软对外提供了一组COM接口。使用这组COM接口,能够将微软的JavaScript、VBScript嵌入到C、C++、VB、C#等宿主语言中。 说到底其实也没什么好说的,先定义一个 CComPtr<IDispatch> 对象,然后调用其对象的Invoke函数,只要弄清楚他的参数正确的传递就好了。 除此之外该接口还提供有一种简易的方法。 CComPtr<IDispatch> Obj; CComVariant var(true); if( FAILED(Obj.Invoke1(L"ReflowDocument", &var)) ) MessageBox(_T("Invoke ReflowDocument failed.")); 另外还有Invoke0、Invoke2、InvokeN、GetProperty、PutProperty、GetIDOfName、GetPropertyByName。这些函数的实现都在\VC\atlmfc\include\atlcomcli.h头文件中有声明和实现。
阅读全文