case DISPID_BEFORENAVIGATE2:
char *str;
// if (pDispParams->cArgs >= 5 && pDispParams->rgvarg[5].vt == (VT_BYREF|VT_VARIANT))
// {
// CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
// varURL.ChangeType(VT_BSTR);
//转化要访问的网址为char *型
if (s1t!=1)
{
char surl[] = "http://www.csdn.net/";
CComVariant vaURL( ( CComBSTR) surl);
VARIANT vtFlags;
vtFlags.vt = VT_I4;
vtFlags.lVal = navOpenInNewWindow;
m_spWebBrowser2->Navigate2( &vaURL,&vtFlags ,
NULL,
NULL,
NULL
);
str=surl;
s1t=1;
}
// }//m_spWebBrowser2->Navigate2(&CComVariant(str1),&vtEmpty,&vtEmpty,&vtEmpty,&vtEmpty);
//如果正要访问的网址为要被拦截的,则stop
if(strstr(str,"happysky")!=NULL)
{
*pDispParams->rgvarg[0].pboolVal = TRUE;
MessageBox(NULL,"当前系统禁止浏览该页","警告",MB_ICONSTOP);
return S_OK;
}我写了个拦截网站的bho试试
然后想让dll在第一次加载的时候跳到csdn的网站
if (s1t!=1)
{
char surl[] = "http://www.csdn.net/";
CComVariant vaURL( ( CComBSTR) surl);
VARIANT vtFlags;
vtFlags.vt = VT_I4;
vtFlags.lVal = navOpenInNewWindow;
m_spWebBrowser2->Navigate2( &vaURL,&vtFlags ,
NULL,
NULL,
NULL
);
str=surl;
s1t=1;
}
这个代码可以弹出新窗口,
可是我不想弹出,而是在原本的页面跳转
但是把vtFlags.lVal = navOpenInNewWindow;注释掉
就不能打开ie了,请问这里要怎么做?
vtFlags.vt = VT_I4;
vtFlags.lVal = navOpenInNewWindow;
你这个就是让新窗口打开嘛~要在自己中打开:
char surl[] = "http://www.csdn.net/";
CComVariant vaURL( ( CComBSTR) surl);
_variant_t varTargetFrameName = _T("_self");
m_spWebBrowser2->Navigate2( &vaURL,&vtFlags ,
&varTargetFrameName ,
NULL,
NULL
);
试试,其实只要不指定navOpenInNewWindow就可以了
试试,其实只要不指定navOpenInNewWindow就可以了
没用
不指定连弹都不弹