在BHO中拦截BeforeNavigate2
我在BHO中拦截BeforeNavigate2事件,
修改了事件的url参数,为什么不能实现地址转向??
部分代码如下:
STDMETHODIMP CAssistMain::Invoke(DISPID dispidMember, REFIID riid,
LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult,
EXCEPINFO* pexcepinfo, UINT* puArgErr)
{
if (!pdispparams)
return E_INVALIDARG;
HRESULT hr = S_OK;
switch(dispidMember)
{
/*
* The parameters for this DISPID are as follows:
* [0]: Cancel flag - VT_BYREF|VT_BOOL
* [1]: HTTP headers - VT_BYREF|VT_VARIANT
* [2]: Address of HTTP POST data - VT_BYREF|VT_VARIANT
* [3]: Target frame name - VT_BYREF|VT_VARIANT
* [4]: Option flags - VT_BYREF|VT_VARIANT
* [5]: URL to navigate to - VT_BYREF|VT_VARIANT
* [6]: An object that evaluates to the top-level or frame
* WebBrowser object corresponding to the event.
*/
case DISPID_BEFORENAVIGATE2:
{
CComBSTR bstrUrl((*(pdispparams->rgvarg[5].pvarVal)).bstrVal);
CComBSTR bstrNewUrl(_T("http://www.google.com/"));
bstrNewUrl += bstrUrl;
(*(pdispparams->rgvarg[5].pvarVal)).bstrVal = bstrNewUrl.Detach();
}
break;
.......
}