IE10中activex控件调用js脚本

在Win8下的IE10中,SSLVPN客户端遇到JS未被调用的问题。经过排查,发现`GetIDsOfNames`返回`DISP_E_UNKNOWNNAME`,通过查询MSDN,改用`IDispatchEx`接口并使用`GetDispID`和`InvokeEx`方法解决了问题。
摘要由CSDN通过智能技术生成

首先说做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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值