阻止用户浏览不良网站
private void onbeforenavigate2(object sender,
AXshdocvw.dwebbrowserevents2_beforenavigate2event e)
{
for(int i=0;i<blocklist.count;i++)
{if((string)blocklist[i]==textbox1.text)
messagebox.show("此网站禁止访问“);
}
}
blocklist是一个ARRAYLIST存储要禁止用户访问的网站名称,如果在使用中发现了数组中还没有搜集到不良网站的网址,可以打开源程序把该不良网址添加到数组中,但是最好的方法还是把禁止的网址存储在文件中,这样就不用重复编译了。
记录用户浏览的网站地址
记录近期用户所浏览的网站地址,以备日后查找和核对,这样可以对用户起到一定的组织作用,这是,可以利用浏览器控件的NavigateComplete2事件,这个事件发生在浏览器控件浏览到某个网页时,
源代码如下:
private void onbeforenavigate2(object sender,
AXshdocvw.dwebbrowserevents2_beforenavigate2event e)
{
system.io.filestream fs =new fillstream("log.txt",
filemode.append,fileaccess.write);
streamwriter sw=new streamwriter(fs);
sw.writeline(datetime.now.toshortdatestring()+";"+e.url.tostring());
sw.close();
fs.close();
}
程序的原理很简单,就是打开某个记录文件,然后把网站的地址记录在这个文件之中。同时最好把时间记录下来,这样以后可随时查看用户访问网站的情况。 过滤IE的弹出式广告窗口
浏览器控件的功能,利用重载Downloadbegin和downloadComplete事件控制弹出窗口。
一般广告窗口都是通过响应NewWindow2事件打开的。一般的响应函数OnNewWindow2的函数原形如下:
virtual void onnewwindow2(
lpdispatch*ppdisp,// 接收新窗口的接口
BOOL* cancel //阻止标记
);
关于onnewwindow2的第2个参数 BOOL* cancel 。当Cancel=false的时候就不能打开新窗口了,如果你的浏览器控件的该参数一直为FALSE,那么一切弹出窗口都不能开开,广告窗口自然就没了,但如果总是FALSE岂不是正常网页也无法浏览了?接下来要做的旧似乎在适当的时候让这个参数返回FALSE。
让我们看看IE下在网页弹出广告窗口的具体事件响应过程:
DOWNLOADBEGIN->发现window.open等JS或者VBS->onnewwindow2->downloadcompelete.
给你的程序加一个成员变量:
bool bpop;
并在构造函数里给BPOP初始化为:BPOP=TRUE;响应DOWNLOADBEGIN事件,在其中加入:BPOP=FALSE;响应DOWNLOADCOMPLETE事件,在其中加入:BPOP=TRUE;响应ONNEWWINDOW2事件,在其中加入:E。CANCEL=M-BPOP。
具体代码如下:
Private void axwebbrowser2_newwindow2(object sender,
axshdocvw.dwebbrowserevents2_newwindow2event e)
{
e.cancel=bpop;
}
Private void axwebbrowser2_downloadbegin(object sender,system.eventargs e)
{
bpop=false;
}
private void axwebbrowser2_downloadcomplete(object sender,system,eventargs e)
{
bpop=true;
}
这样浏览器将不再打开广告窗口,其实实现这个功能的关键在于了解IE下载,弹出窗口的过程和浏览控件的接口控制函数。