阻止用户浏览不良网站

阻止用户浏览不良网站
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下载,弹出窗口的过程和浏览控件的接口控制函数。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值