Donate. I desperately need donations to survive due to my health

Get paid by answering surveys Click here

Click here to donate

Remote/Work from Home jobs

webbrowser control invoke javascript from exteral file

To cut a long story short,i tried to invoke some javascript functions in my webbrowser control(created by CWebBrowser2) via c++,but i cannot call or reach any js function from exteral file(like this ). after a few days'struggle, i guess its a "invoke or invokeEx"/"Idispatch or IdispatchEx" problem,so am i right?how can i change my code into "Ex" version? here is the code:

CComPtr<IDispatch> spDisp = m_web.GetDocument();
CComPtr<IHTMLDocument2> m_spDoc;
HRESULT hr = spDisp->QueryInterface(IID_IHTMLDocument2,(void**)&m_spDoc);
CComPtr<IDispatch> spScript;
CComBSTR bstrMember(strFunc);//strFunc is any function name
DISPID dispid = NULL;
HRESULT hr = spScript->
GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
const int arraySize = paramArray.GetSize();
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = arraySize;
dispparams.rgvarg = new VARIANT[dispparams.cArgs];
for( int i = 0; i < arraySize; i++)
{CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); // back reading
bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);
dispparams.rgvarg[i].vt = VT_BSTR;}
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1;    
hr = spScript->Invoke(dispid,
IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);

Comments