当前位置: 移动技术网 > 网络运营>安全>企业安全 > “QQ反骚扰”开发手记

“QQ反骚扰”开发手记

2018年04月01日  | 移动技术网网络运营  | 我要评论

呆在家中上网聊天实在不是一件惬意的事:每一天打开qq,迎接我的都是一串一串的广告……国庆黄金周,连广告也不放过!:(
无奈,打开visual c++,开始了我的“反骚扰”之路。

首先我面对的问题是:qq一共有几种广告,我能用什么方法消灭它们?

前半个问题很好回答,相信所有常q的朋友都知道。qq的广告有三种:第一种是在系统消息中的弹出式flash广告,第二种是直接弹出的flash广告(窗体非常花哨),第三种是以系统广播形式出现的文字式广告。

对于后半个问题,我给出的答案是:在广告对应的窗体上,都有相应的按钮可以将其关闭,点击即可。

不是吧,就这么简单?也许你要这么问。

是的,不过我是说,让我的“qq反骚扰”帮助我点击这些按钮。即在取得这些按钮的句柄后,向该按钮发送一个单击消息,如下代码所示:

sendmessage( hbutton, bm_click, 0, 0 );


也许会有朋友问,为什么不直接将对话框消灭掉,即:

enddialog( hdialog, true );


问得好!具体原因是……呵呵,我也不知道:)但我能告诉你的是,你可以将我的代码换成上面那一句,效果可能不会很理想的,因为我试过。另外,有很多的共享软件点击器之所以叫“点击器”就是这个道理。单单消灭这个窗口,很可能由该窗口占用的一些系统资源就会流失,相比之下,还是使用点击的方法,让对话框自己调用它回调函数中的退出部分来消灭对话框,岂不是更加安全?

还有一个问题:什么时候让它去点击呢?或者说,它怎么知道什么时候去点击呢?

我的答案是:时刻监视。

是了,这就是我在软件的readme.txt中所说的“计时器技术”了。很简单,只需在对话框的初始化中加入如下代码:

settimer( hdlg, 1, 100, null );


第一个参数是需要设置计时器的对话框句柄,使用mfc的朋友可以省略这个参数;第二个参数是计时器的id;第三个是计时器事件的触发时间间隔(以微妙为单位);第四个参数可以指定响应事件的回调函数,这里用不着,为null。

这样,便可以实现初步的功能——时刻监视了。但是在最后处理程序退出部分的代码时,一定要将先前创建的计时器销毁,即:

killtimer( hdlg, 1 );


因为计时器是一个耗费系统资源的东西,所以在程序结束的时候,必须销毁它以释放系统资源。

下面我来开始介绍如何来在内存中寻找qq的三种广告窗口。以下的代码我均摘自“qq反骚扰”的sdk源代码,请使用mfc的朋友们自行做出相应的改动。

在内存中有很多窗口,那么“qq反骚扰”又是如何知道哪一个窗口是qq的广告窗口呢?很简单,从窗口所具备的众多特征中取出两到三个来作为“过滤器”即可。比如对于系统消息的弹出式广告,它的“过滤器”就是它的标题——“腾讯qq系统广播”和它的“关闭”按钮。

这样,在处理计时器事件时的代码如下:

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网