IHTMLDocument* pHTMLDoc = /* however you can get the IHTMLDocument */
DISPID idMethod = 0;
OLECHAR FAR* sMethod = L"DoSomething";
IDispatch* pScript = 0;
pHTMLDoc->get_Script(&pScript);
HRESULT hr = pScript->GetIDsOfNames(IID_NULL, &sMethod, 1, LOCALE_SYSTEM_DEFAULT,
&idMethod );
if (SUCCEEDED(hr)) {
// invoke assuming no method parameters
DISPPARAMS dpNoArgs = {NULL, NULL, 0, 0};
hr = pScript->Invoke(idMethod , IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD,
&dpNoArgs, NULL, NULL, NULL);
}
pScript->Release();
pHTMLDoc->Release();
//带参数调用方式
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
int paramNum=1;
VARIANT *pParams=new VARIANT[paramNum];
for( int i = 0; i < paramNum; i++)
{
CComBSTR bstr =str; // back reading
bstr.CopyTo(&pParams[i].bstrVal);
pParams[i].vt = VT_BSTR;
}
dispparams.rgvarg = pParams;
dispparams.cNamedArgs = 0;
dispparams.cArgs=1;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1;
hr = pScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);