BOOL CallJScript(TCppWebBrowser* Web, wchar_t* func, VARIANT* vtParams, int cNumberOfParam, VARIANT * vtResult)
{
if(!func || !func[0])
return FALSE;
//CComPtr<IDispatch> spScript;
IHTMLDocument2 *spDoc = (IHTMLDocument2 *)(void *)Web->Document;
if (spDoc == NULL) return false;
IDispatch* spScript;
HRESULT hr = spDoc->get_Script(&spScript);
if (!SUCCEEDED(hr))
return false;
DISPID dispID = NULL;
hr = spScript->GetIDsOfNames(IID_NULL, &func, 1, LOCALE_SYSTEM_DEFAULT, &dispID);
if(FAILED(hr))
return FALSE;
DISPPARAMS dispParams = {0};
dispParams.cArgs = cNumberOfParam;
dispParams.rgvarg = new VARIANT[cNumberOfParam];
for(int i = 0; i < cNumberOfParam; ++i){
VariantInit(&dispParams.rgvarg[i]);
VariantCopy(&dispParams.rgvarg[i], &vtParams[cNumberOfParam - 1 - i]);
}
hr = spScript->Invoke(dispID, IID_NULL, 0, DISPATCH_METHOD, &dispParams, vtResult, NULL, NULL);
delete[] dispParams.rgvarg;
if(FAILED(hr))
return FALSE;
else
return TRUE;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
VARIANT ret,param[1];
param[0].vt = VT_BSTR;
param[0].bstrVal = L"kajskdfjksdjf";
CallJScript(CppWebBrowser1,L"setInviteContent",param,1,&ret);
}