- 论坛徽章:
- 0
|
在ActiveX里面写了一个方法来调用javascript方法
//向js发送信息
LRESULT CFXVTDoc: utputParam(CString fuctionName,const CArray<CString> ¶ms)
{
extern IDispatch *pScript;
if(pScript==NULL){
return -1;
}
CComBSTR bstrMember(fuctionName);
DISPID dispid;
HRESULT hr=pScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr)){
#ifdef _DEBUG
switch(hr)
{
case E_OUTOFMEMORY:
MessageBox(NULL,"E_OUTOFMEMORY","outputParam Err",0);
break;
case DISP_E_UNKNOWNNAME:
MessageBox(NULL,"DISP_E_UNKNOWNNAME","outputParam Err",0);
break;
case DISP_E_UNKNOWNLCID:
MessageBox(NULL,"DISP_E_UNKNOWNLCID","outputParam Err",0);
break;
}
#endif
return -1;
}
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
int paramNum=params.GetCount();
VARIANT *pParams=new VARIANT[paramNum];
for( int i = 0; i<paramNum; i++)
{
CComBSTR bstr =params.GetAt(i); // back reading
bstr.CopyTo(&pParams[i].bstrVal);
pParams[i].vt = VT_BSTR;
}
dispparams.rgvarg = pParams;
dispparams.cNamedArgs = 0;
dispparams.cArgs=paramNum;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1; // initialize to invalid arg
hr = pScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
delete []dispparams.rgvarg;
return 1;
} |
|