VC++实现广告窗口自动关闭

一、 引言

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

二、 程序设计思路与实现

首先要分析一下广告窗口的一般特性。广告窗口一般是通过主页面里的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);
对于那些不是IE类型的窗体根本不用加以考虑,可以将刚才得到的strClassName窗口类型同"IEFrame"进行比较来进行判断,如果是IE窗口才可以进行下一步的判断: //根据句柄获取子窗口指针
CWnd* pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,NULL,"Worker",NULL));
if(!pChildWnd)
  pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,NULL,"WorkerA",NULL));

时间: 2024-10-01 23:10:05

VC++实现广告窗口自动关闭的相关文章

用HOOK函数自动关闭IE广告窗口

在用IE浏览某些网站的时候,网站主页会弹出一些广告网页.所以每当打开这样的网页时,总得手动关闭广告页,感觉比较麻烦.那么,是否可以编写程序来判断打开的网页是否是弹出广告,然后自动关闭这些广告,避免每次手动关闭弹出窗口的麻烦?在一些报刊上介绍了某些解决方法,以下就通过钩子(HOOK)函数截获消息的方法进行讨论: 1.弹出式广告框也是IE浏览窗口,一般来说,它是一个无菜单.无工具栏窗口.所以可以在桌面上打开一个窗口时,首先判断该窗口类型是否是"IEFrame",接着判断IEFrame的子窗

如何消除个人主页空间的广告窗口

个人主页|广告 上网时间一长,很多朋友都喜欢申请免费网站,并制作一个属于自己的个人主页以表现自己.可惜"天下没有白吃的午餐",免费网页虽然好用,但免费网页的提供者几乎总会附加广告.而业者加广告的方式,通常就是在用户的每一个网页上自动添加一些源程序码(大部分都是JavaScript脚本),这样一来,不论浏览者开启哪一个页面,它都会自动在该页面上方增加一个页框广告,并新开一个弹出式广告窗口,令人浏览时生厌. 那除了必须付费之外,我们可不可以使用JavaScript或其他小技巧来将广告删除呢

win7和xp系统怎么阻止IE浏览器弹出广告窗口?

  win7和xp系统怎么阻止IE浏览器弹出广告窗口? 1.打开ie浏览器,然后点击菜单栏的"工具"按钮,在弹出的下拉菜单中选择"Internet 选项",如图: 2.在弹出的"Internet 选项"界面中点击"隐私"选项卡,我们需要在ie的"隐私"保护中作相应的设置以便达到防范弹出窗口的目的,如图: 3.在"隐私"选项卡中,我们可以看到有一个"弹出窗口阻止程序",

win7系统怎么永久关闭所有广告窗口?

  win7系统怎么永久关闭所有广告窗口? 1.打开电脑上的电脑管家,找到工具箱这一项.如下图所示,下面就是工具箱的截图.在工具箱里面查找一个名叫"拦截弹窗"的图标.点击打开; 2.打开弹窗拦截将会出现已经拦截的项目,如果不想拦截这些项,可以选择点击右上角取消拦截; 3.如果想添加新拦截项目,点击左下角加号可以添加新的弹窗; 4.勾选想要拦截的名单,点击添加到拦截名单里面; 5.点击确定,下次启动相关软件时这些拦截了的广告弹窗将不再打扰你使用电脑. windows7教程 windows

win8.1系统隐藏技巧:窗口自动关闭/添加多账户等等

窗口自动关闭.微软称,Windows 8.1可以自动关闭用户不使用的应用.此外,这些应用的窗口并没有表示关闭的符号"x", 如果要手动关闭的话就需要用手指按住该窗口从上往下划动. 添加多账户.由于微软的Windows 8系统在很大程度上依赖云服务,因此每个用户都需要注册自己的微软账号以获取云这些服务.你完全可以添加一个自己孩子的账户以方便监控其上网行为.用户可以用任何电子邮箱注册新的微软账户, 管理隐私.如果你不希望广告商追踪你的在线行为的话,那么你可以自行决定微软分享你多少信息出去.

win7系统设置永久关闭所有广告窗口的方法

  win7操作系统经常遇到打开网页弹出很多广告窗口,每次都要手动关闭,非常麻烦,而且还影响工作效率,有什么方法可以永久关闭所有的广告窗口吗?方法当然是有的,可通过百度管家来关闭所有的广告,下面大家一起来看看具体的设置方法吧. 具体方法如下: 1.打开电脑上的电脑管家,找到工具箱这一项.如下图所示,下面就是工具箱的截图.在工具箱里面查找一个名叫"拦截弹窗"的图标.点击打开; 2.打开弹窗拦截将会出现已经拦截的项目,如果不想拦截这些项,可以选择点击右上角取消拦截; 3.如果想添加新拦截项

如何屏蔽弹出的广告窗口

  操作步骤 1.打开浏览器,单击"工具/Internet选项/安全",打开"安全"页面. 2.在"安全设置"中选择"受限制的站点",并点击"站点"按钮. 3.在弹出的窗口中输入禁止弹出广告页面的地址,再单击"添加"-"确定",从而屏蔽弹出的广告窗口.

devexpress开发程序每次运行弹出广告窗口如何屏蔽?

问题描述 devexpress开发程序每次运行弹出广告窗口如何屏蔽? devexpress开发程序每次运行弹出广告窗口如何屏蔽? 本地已破解没问题,客户未安装破解,每次弹出广告. 解决方案 WinForm的解决思路看这里:http://www.dxper.net/thread-5155-1-3.html

link环境下使用codefirst技术制作《网盘软件》,弹出广告窗口怎么实现?

问题描述 link环境下使用codefirst技术制作<网盘软件>,弹出广告窗口怎么实现? link环境下使用codefirst技术制作<网盘软件>,弹出广告窗口怎么实现? 解决方案 判断屏幕的坐标,然后计算好位置,设置WindowsState为用户定义,指定坐标弹出. 解决方案二: 这问题我感觉看见好多遍了啊