手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

应用实例:VC 实现广告窗口自动关闭 (1)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

一、 引言

  我们在上网浏览时,有时访问到某些网站的网页时会自动弹出一些广告窗口,甚至有不少个人主页为了利用网络广告来赚钱一下同时弹出几个甚至十几个广告窗口。这些窗口一个一个的关掉十分麻烦,而且假如不关的话又会占用大量的系统资源,所以不少人对此深恶痛绝,作为程式员能够利用自身技术优势根据自己的实际需要编制一些很适合自己的小工具。因此本文就对如何通过软件编程来实现对广告窗口的自动关闭进行介绍,以期能起到抛砖引玉之效。

  二、 程式设计思路和实现

  首先要分析一下广告窗口的一般特性。广告窗口一般是通过主页面里的Javascript脚本或VBScript 脚本语言来动态弹出的,其实质还是个IE窗口。但绝大多数窗口在创建出来后是没有菜单,工具条等其他东西的,因此我们能够先搜寻IE窗口,然后判断其窗口是否有菜单和工具条等东西,假如没有就认为是广告窗口了,虽然这样的判断不是十分的严格,但从实际使用情况来看虽然有时会误关一些正常窗口,但发生的几率是相当小的。完万能够忽略。而且这种情况多发生在聊天室中,所以只需在聊天之前将其关闭,只在浏览网页的时候运行程式就一般不会发生误操作了。

  程式的实现并不复杂,由于程式运行起来后任意时刻弹出的广告窗体都要随时关闭,所以就应当通过配置定时器,每隔一段时间就搜寻以下当前是否有广告窗口,假如有就将其关闭,否则继续监控。因此能够在程式的初始化入口函数中用SetTimer()函数启动定时器。下面就结合实际代码对部分关键代码进行讲解:

  从第一个窗口开始对每一个窗口进行枚举搜索,假如第一个窗口存在那么就能够通过在while循环里的GetWindow(GW_HWNDNEXT);来搜寻下一个窗口,并在其内判断是否是广告窗体,直至搜寻完最后一个窗体为止:

CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
 ……
 pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT);
}

  对于判断是否是广告窗口,能够用GetClassName()函数获取窗口类型来判断是否是IE窗口:

CString strClassName;
GetClassName(pMainWnd->m_hWnd,strClassName.GetBufferSetLength(100),100);


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!