当前位置: 代码网 > 服务器>网络安全>企业安全 > “QQ反骚扰”开发手记

“QQ反骚扰”开发手记

2009年05月24日 企业安全 我要评论
“QQ反骚扰”开发手记呆在家中上网聊天实在不是一件惬意的事:每一天打开QQ,迎接我的都是一串一串的广告……国庆黄金周,连广告也不放过!:( 无奈,打开Visual C++,开始了我的“反... 09-05-24

>hwnd hwndcap, hbtnclose1; // 窗口句柄和“关闭”按钮句柄
hwndcap = findwindow( null, "腾讯qq系统广播" ); // 查找窗口
if ( hwndcap != null ) // 如果窗口存在
{
hbtnclose1 = findwindowex( hwndcap, null, "button", "关闭" ); // 继续过滤,找“关闭”按钮
if ( hbtnclose1 != null ) // 如果这个按钮也存在,则基本可以确定是qq的广告了
{
enablewindow( hbtnclose1, true ); // 将按钮生效
sendmessage( hbtnclose1, bm_click, 0, 0 ); // 发送单击消息
}
}

在此我要说明一下将按钮生效的那行代码。qq的早期版本中(譬如我目前在家使用的版本),flash广告是必须得看完一遍后,“关闭”按钮才会生效,所以我必须在找到后立即使它生效以关闭窗口。当然,对于较新版本的qq来说,完全可以去掉这一行。

对于自动弹出的flash广告,就没有上面的那个那么容易了。因为它采用的是图形界面,从外表看是得不到我所谓的“过滤器”的,这就需要其它软件的帮助了。我使用的软件是我写的“对话框查看器”测试版v2.svtf.00,这是一个能够即时获取窗口标题、窗口id和窗口类名的工具。我在它的帮助下得到了这种广告的“关闭”按钮的标题——“close”。于是我的代码如下:

hwnd hwndno, hbtnclose2;
hwndno = findwindowex( null, null, "#32770", "" ); // #32770是对话框的类名
do // 在找到的无标题对话框中反复查找“close”这个按钮
{
hbtnclose2 = findwindowex( hwndno, null, "button", "close" );
if ( hbtnclose2 != null )
break; // 若找到按钮则跳出循环
hwndno = findwindowex( null, hwndno, "#32770", "" ); // 否则继续查找无标题窗口
} while ( hwndno != null );
if ( hbtnclose2 != null )
{
  enablewindow( hbtnclose2, true ); // 同上,若不需要请将此行自行删除
sendmessage( hbtnclose2, bm_click, 0, 0 );
}

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com