容隐蔽窗口,系统托盘等技术一体的关闭广告程序剖析(源码)

原创 2002年11月10日 11:45:00

广告是叫人深恶痛绝的东东(可能商家不这样想),INTERNET也逃不了它的影子。于是各种KILL广告的软件层出不穷,但它们的原理基本都一样,就是用软件判断弹出是窗口是否是广告,是的话就KILL掉,不是就跳过。实现起来也相当简单,核心部分,几行就可以搞定.当然,这并不包括后面要说的隐蔽窗口和托盘技术的实现。(VC++)
先说核心,关广告。(用于IE浏览器)
因为WINDOWS管理窗口是分层的,像目录树一样。而广告往往是IE浏览器派生的子窗口。所以我们用循环方法找到所有窗口,获得窗口句柄,当得知是IE时,再进一步获得该IE的子窗口,然后判断是否是广告。至于如何判断,我们也用最简单的方法,就是看该窗口风格(比如:是否有工具栏)。
下面是代码实现:
void cmywnd::OnTimer(UINT nIDEvent)
{
先获得WINDOWS中第一个窗口句柄:
 CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
进入循环
while (pMainWnd)
{ 该名字用于判断是否是IE浏览器
CString IEName;
获得该窗口的名字并放入IEName中
GetClassName(pMainWnd->m_hWnd,IEName.GetBufferSetLength(100),100);
IE名字是IEFrame,所以判断该名是否于等于它
if(IEName=="IEFrame"){
是的话,获得子窗口句柄
CWnd* pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,NULL,"WorkerW",NULL));
 
 if(pChildWnd)
 {
         如果子窗口存在,获得它的风格,如果满足条件,就给它发消息关闭它。
  if(!(GetWindowLong(pChildWnd->m_hWnd,GWL_STYLE)&WS_VISIBLE))
  {
 pMainWnd->PostMessage(WM_CLOSE,0,0);
 }
 }
}
 继续获得下一个窗口句柄
pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT);
}
 CWnd::OnTimer(nIDEvent);
}
核心就是这些,把上面代码加到程序中就可以实现关广告的目的了。
但作为一个关广告程序,我们并不希望该程序太明显,也就是说程序越隐蔽越好,于是我们想到用隐蔽窗口,并用系统托盘管理。实现方法也相关简单,就是自创一个窗口类,并派生于CWnd,定义如下:
class cmywnd : public CWnd
{
public:
托盘图标
 HICON m_hicon;
托盘菜单
 HMENU menu1;
public:
void create(LPCTSTR pTitle,RECT &rect,unsigned short MaskID,unsigned short BitmapID,HICON hicon,HMENU hmenu);
}

就一个成员函数create,参数也相当明了,不用解释了吧,实现如下:

void cmywnd::create(LPCTSTR pTitle, RECT &rect, unsigned short MaskID, unsigned short BitmapID, HICON hicon, HMENU hmenu)
{
调用API创建一个隐蔽窗口
CreateEx(0,AfxRegisterWndClass(0),pTitle,WS_OVERLAPPEDWINDOW|WS_SYSMENU,rect,NULL,NULL,NULL);
 图标与菜单设置
menu1=hmenu;m_hicon=hicon;
SetIcon(hicon,TRUE);
SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
 设置托盘的一些属性
NOTIFYICONDATA nid;
nid.cbSize=sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=1;
nid.uFlags=NIF_TIP|NIF_ICON|NIF_MESSAGE;
nid.uCallbackMessage=WM_SYSCOMMAND;
nid.hIcon=hicon;
strcpy(nid.szTip,"去广告,赵明个人软件!");
Shell_NotifyIcon(NIM_ADD,&nid);
 
}
以上就是隐蔽窗口和系统托盘的实现,要在程序中使用,也相当简单,调用create函数就可以了,如下:

cmywnd* pFrame=new cmywnd;
其中的参数,视你程序而定
pFrame->create("eyes",rect,IDI_ICON1,IDI_ICON1,hicon,hmenu);

整个"关广告"程序剖析完了,接下来的工作,你只要把它们用到一起就行了。至于你怎么用,就看你了,我这有一个源程序,如果你有兴趣,发E给我啦。
网址:http://h2osky.126.com

赵明
email:  papaya_zm@sina.com;zmpapaya@hotmail.com
web: http://h2osky.126.com


 

windows系统托盘程序(转)

   系统托盘应用作为一种极具吸引力的UI深受广大用户的喜爱。使用系统托盘UI的Windows应用程序数不胜数,比如"金山词霸"、"Winamp"、"RealPlayer"等等。那么如何编写...
  • ghoota
  • ghoota
  • 2014年01月20日 11:51
  • 1070

把rcp最小化到系统托盘

1. 在WorkbenchWindowAdvisor实现类中初始化trayitempublic void postWindowOpen() ...{        initStatusLine(); ...
  • bradwoo8621
  • bradwoo8621
  • 2007年04月30日 23:56
  • 1462

JS上下自动漂浮广告,可关闭

一不懂开发的朋友,需要一个左右浮动显示的广告,网上找了一个,放在这里,希望对大家有用。 很简单,只是想能给大家节省一部分时间     // 这是关闭飘浮广告的宽度,请根据你的广...
  • airingyuan
  • airingyuan
  • 2014年12月08日 21:56
  • 3580

Qt之程序最小化托盘显示及操作

1.功能说明对于GUI程序,如果想要实现当最小化时,程序从任务栏消失,在系统托盘显示一个图标,表示此程序,并能在托盘内通过双击或者菜单使程序界面恢复。2.使用的类主要使用的此类:QSystemTray...
  • zhuyunfei
  • zhuyunfei
  • 2016年05月17日 09:56
  • 8003

大型广告系统架构概述

在互联网江湖中,始终流传着三大赚钱法宝:广告、游戏、电商。三杰之中,又以大哥广告的历史最为悠久,地位也最为不可撼动。 俗话说,离开业务谈架构都是耍流氓。用一句标准的报告性语言介绍大型广告系统的特点就...
  • TigerMee
  • TigerMee
  • 2016年04月03日 23:39
  • 9188

Win32 API 实现系统托盘程序

托盘程序就是运行在Windows系统托盘的程序,就是在桌面右下角的显示区域的一个小图标。通常托盘程序带有几种功能:托盘菜单,托盘图标,气泡提示,托盘提示。例如QQ收到消息后,会在系统右下角显示闪动QQ...
  • cwqcwk1
  • cwqcwk1
  • 2013年11月05日 17:53
  • 4102

WPF实现系统托盘

利用WinForm项目中自带NotifyIcon,contextMenuStrip控件,创建一个winForm控件项目,然后在WPF中引入使用即可。参考: http://mervyn807.blog....
  • icewizardry
  • icewizardry
  • 2013年12月11日 16:11
  • 2668

带关闭功能的Javascript对联广告代码

来源: http://hi.baidu.com/83925com/blog/item/06f94f24ab201932c89559b7.html对联广告 - Citk.Net             ...
  • tongdoudpj
  • tongdoudpj
  • 2008年05月10日 20:32
  • 2130

MFC系统托盘的实现

通常电脑里边的软件,当你打开后会在电脑最右下角的任务栏上生成一个系统托盘,当你点击最小化或者点击关闭按钮后,若想恢复窗口,可以左键双击或者单机这个系统图标,同时鼠标右键点击,又会有其他的菜单弹出,比如...
  • u013051748
  • u013051748
  • 2015年05月10日 16:34
  • 1513

C#-WinForm设置托盘程序

背景现在很多程序都有这样的托盘程序 窗体关闭时,并不真正关闭程序,只是任务栏不显示该应用程序,在右下侧托盘里显示; 双击托盘,窗体还原; 右击窗体,出现托盘菜单,实现最小化,最大户,还原,退出等...
  • gatieme
  • gatieme
  • 2015年08月08日 11:50
  • 6199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:容隐蔽窗口,系统托盘等技术一体的关闭广告程序剖析(源码)
举报原因:
原因补充:

(最多只允许输入30个字)