请登录[¤ 阳光论坛 ¤]参与讨论


阳光宝宝
90

 □ 主题: 用VB自动关闭网页广告窗口
 □ 内容: 1楼

      经常上网冲浪的人,在打开网页的时候经常遇到同时弹出多个广告窗口的情况,不但影响视线,还会影响网速。如果用鼠标一个个关闭,实在很麻烦。我经过观察分析,找到了解决的办法,可以让你的屏幕从此清爽起来。 
       
       网页广告分析: 
       
       1.弹出的广告窗口 
       网页中弹出的广告窗口都是用JS或VBS编写的脚本程序,每个广告窗口都有自已的URL地址,只要获取所有的IE窗口的URL地址,再把其中的广告窗口的URL地址记录下来保存到文本文件中,并且关闭这个窗口,就达到了自动关闭广告的目的。 
       2.Flash广告窗口 
       有些广告是FLASH动画,只要获得窗口句柄,关闭类名为“MacromediaFlashPlayerActiveX”的FLASH播放控件,就可以关闭这些FLASH广告了。 
       编程原理:通过设置定时器定时搜索,根据IE的程序名判断是否有IE窗口打开,如发现再进一步判断打开的IE的URL的地址是否与记录在列表框中的一致,如相同就关闭它。由于不涉及窗口的类名,无论是IE的各个版本都可以使用。至于网页中的FLASH则是通过“FindWindowEx”函数来一层层的查找打开网页窗口的“MacromediaFlashPlayerActiveX”类名(IE窗口的各个类名是通过工具软件“SPY++”可以获得),并返回窗口句柄,再用“SendMessage”消息函数发送消息关Flash广告窗口。 
       
       程序设计: 
       
       新建一个工程,添加一个窗体和控件。 
       1.建立一个用来控制图标在系统托盘的模块“Module1”,相关代码见后文下载地址。 
       2.程序主窗口的部分代码如下: 
       Private Sub cmdRightOne_Click()''向黑名单列表中添加网址,cmdLeftOne的代码与此雷同,详见程序源代码 
       On Error Resume Next 
       Dim i As Integer 
       If lstAll.ListCount = 0 Then Exit Sub 
       If lstAll.Text = "" Then Exit Sub 
       lstSelected.AddItem lstAll.Text 
       i = lstAll.ListIndex 
       lstAll.RemoveItem lstAll.ListIndex 
       If lstAll.ListCount > 0 Then 
       If i > lstAll.ListCount - 1 Then 
       lstAll.ListIndex = i - 1 
       Else 
       lstAll.ListIndex = i 
       End If 
       End If 
       lstSelected.ListIndex = lstSelected.NewIndex 
       End Sub 
       
       Private Sub closeflash()''关闭flash动画 
       On Error GoTo callerrora 
       Dim sclassname As String 
       Dim windowhandle As Long 
       Dim lhwnd As Long 
       Dim a As Long 
       lhwnd = 0 
       sclassname = ("IEFrame") 
       lhwnd = FindWindowEx(lhwnd, 0, sclassname, vbNullString) 
       sclassname = ("Shell DocObject View") 
       lhwnd = FindWindowEx(lhwnd, 0, sclassname, vbNullString) 
       sclassname = ("Internet Explorer_server") 
       lhwnd = FindWindowEx(lhwnd, 0, sclassname, vbNullString) 
       sclassname = ("MacromediaFlashPlayerActiveX") 
       lhwnd = FindWindowEx(lhwnd, 0, sclassname, vbNullString) 
       windowhandle = lhwnd 
       If windowhandle <> 0 Then 
       a = SendMessage(windowhandle, WM_CLOSE, 0, 0) 
       End If 
       Exit Sub 
       callerrora: 
       MsgBox Err.Description 
       Err.Clear 
       End Sub 
       
       Private Sub filter()''过滤黑名单中的广告链接 
       Dim objIE As Object 
       Dim i As Integer 
       On Error Resume Next 
       For Each objIE In dWinFolder ''遍历所有IE浏览器窗口 
       If InStr(1, objIE.FullName, "IEXPLORE.EXE", vbTextCompare) <> 0 Then 
       For i = 1 To lstSelected.ListCount - 1 
       If objIE.LocationURL = Trim(lstSelected.List(i)) Then 
       objIE.Quit 
       Exit For 
       End If 
       Next i 
       End If 
       Next 
       objIE = Nothing 
       End Sub 
       代码输入完毕,按F5运行一下吧(如图)!然后在IE中打开一个含有多个广告窗口的网页看一下效果如何,只要单击托盘图标调出程序,按“刷新”按钮就会在左边栏中列出所有的URL地址,把广告窗口的URL地址添加到右边的黑名单中,“确定”后以后就会自动关闭这个广告窗口了。如果想浏览它,再把它从黑名单中删除即可。也可以在托盘图标的右键菜单中,控制功能的开/关。 
       本程序在Windows 98(IE6.0)和VB6.0企业版下调试通过 
      
——
      
争分夺秒背单词 → core  n.果实的心,核心
 □ 发帖时间:2012-11-20|13:46:28 |回复|返回|



阳光宝宝
90

 □ 主题: 回应:用VB自动关闭网页广告窗口
 □ 内容: 2楼

      内容删除
——
      
争分夺秒背单词 → heroine  n.女主角;女英雄
 □ 发帖时间:2012-11-20|13:48:13 |回复|返回|

 页次:1/1页 每页10  本主题贴数1 分页: 1


你还没有登录论坛,所以不能发表你的意见。你可以选择:

1、我已注册,我要

2、我还没注册,我要

3、太麻烦了,我还是

Go Top

Copyright by(C)2003-2015 http://abc.sy578.cn