调用ActiveX网页中JavaScript函数的问题

aa3000 2004-11-29 04:32:18
依照网上查找所得写了以下函数
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的架构,请大家帮忙
...全文
90 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pacman2000 2004-12-01
  • 打赏
  • 举报
回复
这个问题可以到VC版里去问问。
dudu妈 2004-11-29
  • 打赏
  • 举报
回复
最近郁闷死了,帮你顶一下!!!!!

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧