shellWindow获取网页中flash游戏的句柄

经常上网冲浪的人,在打开网页的时候经常遇到同时弹出多个广告窗口的情况,不但影响视线,还会影响网速。如果用鼠标一个个关闭,实在很麻烦。我经过观察分析,找到了解决的办法,可以让你的屏幕从此清爽起来。

   网页广告分析:

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企业版下调试通过。代码下载:
http://vbworld.sxnw.gov.cn/source/internet/prog1.zip

 

转载于:https://www.cnblogs.com/allenboke/archive/2010/12/31/1922774.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值