在浏览网页的时候,常常看到一个带有广告的弹出式窗口,有时候是好几个.
网络上有关如何屏蔽弹出式广告的方法很多, 今天自己也写了一个小工具, 算是练练手.
使用很简单, 启动程序后, 只需要按一下键盘最右上角的Pause暂停键,就可以关闭最上面的广告窗口,并且记录下来,下次自动关闭.
界面如图所示.
这里提供源码, 其中参考了几篇文章.
http://www.codeproject.com/KB/cs/WindowKiller.aspx 用来关闭不想要的窗口
http://www.codeproject.com/KB/cs/globalhook.aspx 处理全局钩子程序, 比如提供热键功能.
因为广告是经常变换的, 所以我把自己的列表上传到个人网站上, 这样可以通过菜单更新.
当然, 最好的办法是,大家群策群力,一起上传自己的列表,但是有人会做坏事,
本来想通过发送邮件方式来上传,然后人工添加和维护,也许有人愿意这么做.
如果有谁知道如何消除浮动广告窗口的方法,请告诉我.
下面贴一段有关如何得到最上层浏览器窗口标题的代码:
1
private
string
GetBrowserTitle()
2 {
3 System.Int32 window_handle = User32.GetTopWindow(User32.GetDesktopWindow());
4
5 int nsize = 256;
6 System.Text.StringBuilder text_stringBuilder = new System.Text.StringBuilder(nsize);
7 string ieText_string = " - Windows Internet Explorer";
8 System.Text.StringBuilder class_stringBuilder = new System.Text.StringBuilder(nsize);
9
10 try
11 {
12 while (true)
13 {
14 User32.GetWindowText(window_handle, text_stringBuilder, nsize);
15
16 string s = text_stringBuilder.ToString();
17
18 if (s.IndexOf(ieText_string) > -1)
19 {
20 s = s.Replace(ieText_string, "");
21 return s;
22 }
23 if ((window_handle = User32.GetWindow(window_handle, User32.GW_HWNDNEXT)) == 0)
24 {
25 return null;
26 }
27 }
28 }
29 catch (Exception) { return null; }
30 }
31
32
2 {
3 System.Int32 window_handle = User32.GetTopWindow(User32.GetDesktopWindow());
4
5 int nsize = 256;
6 System.Text.StringBuilder text_stringBuilder = new System.Text.StringBuilder(nsize);
7 string ieText_string = " - Windows Internet Explorer";
8 System.Text.StringBuilder class_stringBuilder = new System.Text.StringBuilder(nsize);
9
10 try
11 {
12 while (true)
13 {
14 User32.GetWindowText(window_handle, text_stringBuilder, nsize);
15
16 string s = text_stringBuilder.ToString();
17
18 if (s.IndexOf(ieText_string) > -1)
19 {
20 s = s.Replace(ieText_string, "");
21 return s;
22 }
23 if ((window_handle = User32.GetWindow(window_handle, User32.GW_HWNDNEXT)) == 0)
24 {
25 return null;
26 }
27 }
28 }
29 catch (Exception) { return null; }
30 }
31
32
Vs2008版本项目下载: synergy代码