JS调用C++
IWebbrowser2中C++与JS交互主要处理IDispatch中的两个接口
1、GetIDsOfNames
这里主要是把需要调用JS函数给编一个号,为什么函数要编号呢?建议看看COM的原理,大概是C++实现的COM调用机制主要是用的虚函数表,但是其他的脚本语言中并没有这个玩意,其他脚本需要调用函数时,只能通过函数的ID来找到对应的函数。
那么我们就来给我们需要的函数一一编号:
函数列表的声明部分
struct _JS_FUNCTION
{
LPCTSTR lpName;
DISPID id;
UINT nArgcCount;
HRESULT (CMyWebEventHandler::*FUN)(DISPID, DISPPARAMS*, VARIANT*);
};
const _JS_FUNCTION funs[]=
{
{ L"setAppState", DISPID_BASE+0, 4, &CMyWebEventHandler::OnGetAppState },
{ L"OneClickInstall", DISPID_BASE+1, 5, &CMyWebEventHandler::OnOneClickInstall },
// { L"GetInstallState", DISPID_BASE+2, 1, &CMyWebEventHandler::OnGetInstallState },
{ L"DownLoadFile", DISPID_BASE+2, 5, &CMyWebEventHandler::OnDownLoadFile },
{ L"OpenSite", DI