首先说做SSLVPN客户端的真苦逼,不断对付windows的升级,ie的升级,杀软的阻挠。
最近发现win8下sslvpn客户端可以安装,不能使用。调试了一下,发现js根本没有调用。
经过和vip菜鸟的讨论,他也没发现代码问题,但是建议根据返回值看看是否调用成功。
pScript->Invoke返回值0X80020003,无效的调用。
仔细看了一下
hr = pScript->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
得到的dispid是-1,hr的值是0X80020006 (DISP_E_UNKNOWNNAME)未知名称。
感到奇怪的是,这段代码在以前的IE版本中运行很正常。
看了一下csdn,建议使用
LPOLESTR pwFunName = L"m_strTest"; // 准备取得 Add 函数的序号 DispID
DISPID dispID; // 取得的序号,准备保存到这里
hr = pDispatch->lpVtbl->GetIDsOfNames( // 根据函数名,取得序号的函…
真是胡扯。
看了一下msdn,了解到
While IDispatch->GetIDsOfNames() fails to get a Dispatch ID of the variable in IE9, it turns out that using the result from get_Script() as IDispatchEx instead of IDispatch and calling:
这就很简单了,
CComPtr<IDispatchEx> pDispE
IE10中activex控件调用js脚本
最新推荐文章于 2022-01-03 16:30:22 发布