调用ActiveX网页中JavaScript函数的问题
HRESULT RunScript(LPCSTR szFunctionName, int nParams, ...)
{
CComPtr<IDispatch> pScript;
HRESULT hr = m_pDocument->get_Script(&pScript);
if (SUCCEEDED(hr))
{
CComBSTR bstrMember(szFunctionName);
DISPID dispid;
hr = pScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
if (SUCCEEDED(hr))
{
DISPPARAMS dispparams = { NULL, NULL, 0, 0 };
dispparams.cArgs = nParams;
va_list args;
va_start(args,nParams);
VARIANT *pArgs = new VARIANT[nParams+1];
ZeroMemory(pArgs, (nParams+1) * sizeof (VARIANT));
for (int i=0; i<nParams; i++)
{
LPCSTR p = va_arg(args,LPCSTR);
CComBSTR bstr = p;
bstr.CopyTo(&pArgs[i].bstrVal);
pArgs[i].vt = VT_BSTR;
}
va_end(args);
dispparams.rgvarg = pArgs;
DISPID dispidPut = DISPID_PROPERTYPUT;
dispparams.rgdispidNamedArgs = &dispidPut;
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1; // initialize to invalid arg
hr = pScript->Invoke (dispid,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
if (nParams > 0)
delete [] pArgs;
}
}
return hr;
}
DisplayMsg("dspmsg",1,"你好");
在InPlaceActivate及Activex出口函数中调用没有问题,但在ActiveX里自己建立的线程调用该函数就不能运行,错误代码是 excepInfo.wCode = DISP_E_MEMBERNOTFOUND,请问这是为什么?我不是很熟COM的架构,请大家帮忙
相关推荐
JavaScript调用Activex控件的事件的实现方法
书写成这样: [removed] // js 处理具体内容。 [removed] 当acitveX控件 onXXXevent()事件被触发时,调用此方法。 如果一个半个的话还好说,几十个这样的函数,把我的页面占据的满满的。况且在VS2008中,“设置选定内容格式化”总是提示:“未能完成该操作”. 于是我想用另一种方式来替代这种书写,最起码,可以把他放到一个单独的js文件中。 代码如下: vbscript实现的很奇特 sub activex_onXXXevent() ‘ 处理
activex回调js
页面调用activex控件及c#回调页面js方法,将activex信息返回页面,测试前请运行debug文件夹中的1.bat将activex控件注册后,直接打开示例页面即可
JavaScript调用客户端Java程序的方法
主要介绍了JavaScript调用客户端Java程序的方法,实例分析了javascript调用java程序的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
JS调用OCX,一步步教你
JS调用OCX,一步步教你,包括传参版和无参版,和所需要注意的问题,再学不会我也没办法了,一起文件都是原创,禁止乱传
WPS接口开发全解析:网页JS调用与ActiveX集成实战
ActiveX 和 COM 技术确实“年纪不小”了,但在某些封闭、可控的企业环境中,它们依然是无可替代的存在。关键在于:用现代工程思维驾驭传统技术。用模块化封装降低复杂度用异常处理提升健壮性用日志审计保障安全性用分块策略优化性能当你能把这些“古董级”接口玩得像 React Hooks 一样丝滑时,你就真的掌握了“以不变应万变”的工程智慧 🎯。所以,别再说什么“这玩意儿过时了”——能解决问题的技术,永远都不过时 ✨。本文还有配套的精品资源,点击获取。


其它技术问题
