1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
STDMETHODIMP ABCtest::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pvarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
USES_CONVERSION;
if(dispidMember == DISPID_BEFORENAVIGATE2)
{
BSTR type_text;
HRESULT result = m_spWebBrowser2->get_Type(&type_text);
if(FAILED(result ))
return result ;
LPTSTR value_text = new TCHAR[SysStringLen(type_text)];
lstrcpy(value_text, OLE2T(type_text));
if(strcmp("http://google.com/",(const char *)value_text) == 0)
{
VARIANT vFlags = {0},vTargetFrameName = {0};
m_spWebBrowser2->Navigate(SysAllocString(L"about:blank"),&vFlags,&vTargetFrameName,NULL,NULL);
m_spWebBrowser2->put_Visible(VARIANT_TRUE);
return S_FALSE;
}
return S_OK;
}
else if(dispidMember == DISPID_NAVIGATECOMPLETE2)
{
BSTR type_text;
HRESULT result = m_spWebBrowser2->get_Type(&type_text);
if(FAILED(result))
return result;
LPTSTR value_text = new TCHAR[SysStringLen(type_text)];
lstrcpy(value_text, OLE2T(type_text));
if(strcmp("http://google.com/",(const char *)value_text) == 0)
{
VARIANT vFlags = {0},vTargetFrameName = {0};
m_spWebBrowser2->Navigate(SysAllocString(L"about:blank"),&vFlags,&vTargetFrameName,NULL,NULL);
m_spWebBrowser2->put_Visible(VARIANT_TRUE);
}
return S_OK;
}
return S_FALSE;
}
|