Delphi下网页广告拦截技术的实现
第23卷第1期
2007年3月
沧州师范专科学校
JournalofCangzhouTeachers’College
No.1Vo1.23
Apr.2007
Delphi下网页广告拦截技术的实现
张福峰,李文广
(沧州职业技术学院信息工程系,河北沧州o61o01)
摘要:介绍了网页弹出式广告窗口拦截的原理,并给出了在Delphi7.0
环境下自动关闭网页广告窗口的两
种实现方法及关键部分的程序代码.
关键词:Delphi7;网页广告;拦截
中图分类号:TP393文献标识码:A文章编号:1008-4762(2007)01-0058-01
一
,引言
提到网页弹出式广告,我们都不会陌生,无论是新浪,网
易还是个人网站,我们在上网浏览时时都会弹出几个广告窗
口.这些窗口一个个的关掉十分麻烦,而且如果不关的话又会
占用大量的系统资源,真让人厌烦.本文介绍了在Delphi中通
过软件编程来实现对广告窗口自动关闭的实现原理及方法.
二,设计思路与实现方法
广告窗VI实际上也是—个IE窗VI,它是通过调用Script
脚本语言实现动态弹出广告窗口的.下面将针对广告窗口的类
名和标题进行分析,给出具体的拦截方法.
1.按窗口类名进行拦截
为了弄清广告窗口与正常窗口的区别,对Win98/XP/2000
系统下的IE窗口类名进行了监测.结果发现Win98下第—个
IE浏览窗口的类名是IEFrame,新窗口的类名为
CabinetWClass,广告窗口的类名是CabinetWClass;在
WinXP/2000下正常IE窗口以及广告窗口的类名都是IEFrame,
我的电脑等资源浏览窗口的类名为CabinetWClass.经进一步
研究发现,win98下广告窗口的WorkerA类和ShellDocObj~t
View类的rect.top的值是相同的,正常IE窗VI的WorkerA类
和ShellDocObjectView类的rect.top的值是不相同的,在
WinXP/2000没有WorkerA类,被WorkerW类取代.因而实现
广告窗口的拦截关闭,只需针对不同系统,判断IE窗口的类
名以及窗Et的WorkerA(WorkerW)类和ShellDocObjectView
类的rect.top值是否相同来确定是否为广告窗VI.
在程序实现时,我们对打开窗口进行搜索,通过
FindWIndowEx找到符合条件的窗口,用PostMessage向窗口
发送CLOSE将其关闭.为了能及时阻止广告窗口的弹出,可
以设置定时器,定时检测并关闭广告窗[J.下面是程序实现的
关键代码:
procedureTForm1.TimerlTimer(Sender:TObject);
Var
MainHD,WorkAHD.ViewHD:THandle;
T_
workA,T——
view:integer;
rect1.rect2:TRect;
begin
mainHD:=FindWlndowEx(0,0,.IEframe.,nil);
ifMainhd<~0then
begin
WorkAHD:=FindWindowEx(Mainhd,0,WqorkerW.,nj1);
GetwindowRect(WorkAHD,rect1);
T_
workA:=rect1.top;
ViewHD:=FindWindowEx(mainHD,0,.ShellDocObject
View.,nil);
ifviewHD<~0men
begin
GetwindowRect(ViewHD,rect2);
T——
view:--rect2.top;
ifTView=orkA
thenPostMessage(MainHD,WM_CLOSE,0,0);
end;
end;
end;
上述代码实现了WinXP/2000下弹出广告窗口的关闭,将
“IEFrame”改为”CabinetWClass”,将”WorkerW”改为
“WorkerA”,可实现Win98下的广告窗口关闭.大多聊天室
窗口具有上述广告窗口的特征,因而也会被关闭.目前有些网
页广告窗口的类名是”AD脏LPER—IAD2”,而不是”IEFrame”.
另外,一些不具有上述特征的链接窗口的弹出时也不能被关
闭.通过结合下面的标题监测法,可准确实现广告及无用窗口
的关闭,避免出现误关,漏关的情况.
2.按窗口标题拦截
打开的每个窗El都有自己标题名称,要想实现关闭某个或
收稿日期:2006一lO-O9
作者简介:张福峰(194一),男,河北南皮人.沧州职业技术学院讲师,主要从事计算机教学及软件开发;
李文广(197(卜_),男,河北盐山人,沧州职业技术学院实验师,主要从事微机教学及软件开发.
?
8?
下转第6O页)
如图1所示基于CICS的银行中1日业务软件平台的系统框架结构,平台
以CICSServer为主体,使用CICS完成对交易的调度,管理.对数据库资
源的访问.CICS服务端启动之后.监听CICS客户端的请求;当客户端请
求到达时.调用CICS交易的主控模块,由主控模块根据不f司的交易请求调
用不同的交易处理程序.主控模块完成的主要工作:接收交易请求包,数
据包加,解密,报文格式转换,业务
控制处理,记载平台日志.发送
返回数据包等.在交易处理程序中,可以利用CICS提供的API接口
CICS的服务.CICS服务端启动之后,自动建立对数据库多个的连接,供
交易调用.针对银行中间业务特点,实现了以下连接:
(1)对柜台终端.外围系统的接口.平台位于柜台终端,外围系统和
CICS之间设有监听模块,通过启动不同的监听服务(Socket,MQ,CICS
等)监听柜面终端和外围发来的交易清求.并负责将其转发给CICS服务端
(中间业务平台主控程序)由CICSCHent端发送给CICSServer端.对于
比较常用的通信控制可通过简单配置来实现,对于比较个性化的通信提供
了灵活的动态库接口,可以根据需要动态增加新的通信模块.来处理与不
同系统之间通信的差异性.
(2)对银行主机的接口.提供了和网关机进行数据交换的功能,CICS
主控模块将中间业务平台格式的数据转为网关机的数据格式.发送给网关
机.最终上主机,并取得返回结果.还原到中间业务平台的数据格式.这
种
的优电是系统一致性好.减少了主机对下的接口.同时将调用主机
接口所需的打包,解包等过程上移至网关处理.从而可以简化交易的开发.
(3)与第三方响应系统的接口.所谓”第三方”.是指银行为之提供
服务的客户.对于作为”服务方”的第三方交易响应系统.通信连接方式
也是多种多样,开发一套绝对通用的通信程序几乎也是不可能的.为了实
现集成化通信接入,{殳置—个第三方通信转接服务模块(通常与交易监听
模块整合在一起).用来集成所有与第三方响应系统的通信,在它与交易处
理系统之问定制
,规范的数据交换接口.交易处理模块调用通用的通
信程序请求第三方服务.然后由该服务模块转发至第三方系统处理.
结束语
总之.基于CICS中间件技术的银行中间业务软件平台通过符合行业标
准的软件平台来加速价值的转化,可以定义,集成和自动化软件开发的业
务和流程.还提供完整的建立,集成,现代化和部署软件的端到端平台,
通过减少混乱和增加可预测性来提高效率.其面向银行业特点,达到最大
化效率,缩短投资回报时间,增加业务灵活性的目的.随着经济的发展和
软件技术的不断进步,这一软胜II亚I台定将得到更广泛的应用和发展.
参考文献:
[1】宋晓粱,刘东生.许满武,等.中间件及其在三层客户~/,IK务器模型
中的应用[J】.计算机应用.1999.(7).
[2】刘发责.王宇君.等.IBMS/390事务处理CICS[M】.浙江大学出版社,
2000.
责任编辑:尤书才
(上接第58页)
某一类标题窗口不是什么难事,只需将要关闭窗口的标题或部
分标题写入特征库,在拦截时加以判断即可.在程序实现时,
我们对打开窗口进行枚举搜索.窗口标题与特征库中数据比
较,匹配则进行相应操作.对窗口的枚举搜索是通过
Getwindow(handle.GW_HWNDFIRST)和Getwindow(handle,
GW_HWndNext)来实现的.下面是程序的关键代码:
procedureTForm1.Button2click(sender:TObject);
val”hCurrentWindow:HWnd;szText:array[0..2541ofchar;
begin
hCurrentWindow:=Getwindow(handle,GW_HWNDFirst);
whilehCurrentWindow?0do
begin
ifGetwindowtext(hcurrentWindow,@sztext.255)>0then
begin
ifpos(莆投广告’,sztext)>O
thenPostMessage(hCurrentWindow,WM_CLOSE,0.0);
end;
hCurrentWindow:=Getwindow(hCurrentwindow.GW_HWndNex0;
end;
end:
上述代码实现了查找并关闭新浪弹出的”背投广告”窗口
的功能,稍加修改就可实现关闭那些所有垃圾窗口的功能.
三,小结
本文实现了通过砸窗口的类名,标题来关闭广告窗口的功
能.由于驻留内存实时监控,在程序编制时,尽量控制好程序
大小,减少内存资源占用.文中涉及的方法具有一定的通用性,
可以将其用于进程监控,也可以用来实现对硬盘分区的封锁.
限制对硬盘的访问.
参考文献:
【1]飞思科技产品研发中心.Delphi7高级应用开发[M].电
子工业出版社,2003.
【2]陈省.Delphi深度探索【M].华中科技大学出版社,2002.
[责任编辑:尤书才】
ImplementationofWebpageAdvertisingInterceptTechnologyunderDelphi
ZHANGFu-feng,LIWen-guang
(DepartmentofInformationEngineering,CangzhouVocationalCollegeOfTechnology,CangZhou061000)
Abstract:ThispaperintroducestheInterceptPrincipleofWebpagePop-upAdvertising.andgivestwopracticalimplementationmethod
andsomeKeyPartsexamplescodeunderDelphi.
Keywords:Delphi7.0;WebpageAdvertising;Intercept
?
6?