void CMyHtmlView::OnCallscript()
{
HRESULT hr;
LPDISPATCH pDispatch = GetHtmlDocument();
if( pDispatch == NULL ) return;
IHTMLDocument* pHtmlDoc;
hr = pDispatch->QueryInterface( __uuidof( IHTMLDocument ), (void**)&pHtmlDoc );
LPDISPATCH pScript;
pHtmlDoc->get_Script( &pScript);
pScript->AddRef();
if (SUCCEEDED(hr))
{
OLECHAR* szMember = L"evaluate";
DISPID dispid;
HRESULT hr = pScript->GetIDsOfNames(IID_NULL, &szMember, 1,
LOCALE_SYSTEM_DEFAULT, &dispid);
if (SUCCEEDED(hr))
{
COleVariant vtResult;
static BYTE parms[] = VTS_BSTR;
COleDispatchDriver dispDriver(pScript);
dispDriver.InvokeHelper(dispid, DISPATCH_METHOD, VT_VARIANT,
(void*)&vtResult, parms,
"5+Math.sin(9)");
}
}
pScript->Realease();
pHtmlDoc->Release();
pDispatch->Release();
} |