如何用HOOK函数关闭IE广告窗口
来源:才华咖 本文已影响2.32W人
来源:才华咖 本文已影响2.32W人
很多时候广告窗口都很烦人,YJBYS小编下面为你整理了如何用HOOK函数关闭IE广告窗口的方法,希望对你有所帮助。
1、弹出式广告框也是IE浏览窗口,一般来说,它是一个无菜单、无工具栏窗口。所以可以在桌面上打开一个窗口时,首先判断该窗口类型是否是“IEFrame”,接着判断IEFrame的子窗口类型“WorkerW”的属性是否是不可见(这是一般弹出式广告窗口的特征),这样就可以向该窗口发出关闭的消息,以上步骤一般能自动关闭大部分弹出广告框。
2、通过WINDOWS编程中的钩子(HOOK)函数解决截获在桌面上打开窗口的消息。钩子函数的基本原理就是对WINDOWS系统的某些动作注册,当发生这些事件时首先调用预先设置的回调函数,回调函数处理后,再由原来的函数处理。这里回调函数的作用正是实现1中叙述的'功能。因为这里实现的钩子函数是监视其它进程窗口产生的消息,所以必须用动态链接库实现。
主要代码如下:
在动态链接库中,实现钩子回调函数。
LRESULT CALLBACK CallWndProc(
int nCode, // hook code
WPARAM wParam, // current-process flag
LPARAM lParam // address of structure with message data
)
{
CWPSTRUCT *pCwp = NULL;
CString strClassName;
HWND hWnd = NULL;
unsigned long ulStyle = 0;
BOOL bIsClosed = FALSE;
if (nCode < 0)
{
return CallNextHookEx(gHook, nCode, wParam, lParam);
}
if (NULL != lParam)
{
pCwp = (CWPSTRUCT *)lParam;
if (WM_SHOWWINDOW == pCwp->message)
{
::GetClassName(pCwp->hwnd, ufferSetLength(128), 128);
//IE窗口的类型为IEFrame
if (0 == areNoCase("IEFrame"))
{
hWnd = ::GetWindow(pCwp->hwnd, GW_CHILD);
if (NULL == hWnd)
{
bIsClosed = TRUE;
}
while (NULL != hWnd)
{
::GetClassName(hWnd, ufferSetLength(127), 127);
//IEFrame的子窗口包含窗口类型WorkerW
if (0 == areNoCase("WorkerW"))
{
//若WorkerW不可见,则一般是广告弹出窗口
if (0 == (::GetWindowLong(hWnd, GWL_STYLE) & WS_VISIBLE))
{
bIsClosed = TRUE;
break;
}
break;
}
else
{
bIsClosed = TRUE;
}
hWnd = ::GetWindow(hWnd, GW_HWNDNEXT);
}
//若是IE广告弹出窗口,则关闭
if (TRUE == bIsClosed)
{
::PostMessage(pCwp->hwnd, WM_CLOSE, 0, 0);
}
}
}
}
return CallNextHookEx(gHook, nCode, wParam, lParam);
}
在主程序中,调用DLL中的CallWndProc。
//获得动态链接库句柄
HINSTANCE hmodHook = GetModuleHandle("");
if (NULL == hmodHook)
{
return TRUE;
}
//设置钩子函数
if (NULL == gHook)
{
gHook = SetWindowsHookEx(WH_CALLWNDPROC,
(HOOKPROC)GetProcAddress(hmodHook, "CallWndProc"), hmodHook, 0);
}
主程序退出时,注意调用钩子卸载函数。
//卸载钩子函数
if (NULL != gHook)
{
UnhookWindowsHookEx(gHook);
gHook = NULL;
}
PHP创建和使用session cookie变量
如何用photoshop制作广告创意
初一英语Lesson2家庭作业:What Do They Look Like?
PHP如何设置和取得Cookie值
如何禁用cookie功能
办公文秘如何巧用Excel的Vlookup函数批量调整工资表
关于《I like high school》英语记事作文赏析
Win10系统提示Officebackgroundtaskhandler.exe弹窗问题的解决方
初中英语学习关于also、too、eithe及lookr技巧
英语阅读:Who Did Patrick's Homework?
How to Keep Healthy 如何保持健康英语作文
PHP创建和使用sessioncookie变量的方法
六下英语Unit5Ourearthlookslikethisfromspace教案
php使用sessioncookie变量的方法
How to make good friends高中英语作文
Modern Technology Makes Life More Conv英语六级作文
如何使用PHP生成唯一ID之SnowFlake
三年级上册《Whatdotheyliketodo》教学设计范文
七下Module 10 Unit 2 This morning we took a walk评课稿
What do you think of Internet初中英语作文
如何写广告口号?
英语作文:The Value of Reading Books
The Clever King Solomon的英语故事短文
Zend studio for eclipse中使php可以调用mysql相关函数的设置方
《The Food And Drink We Like》优秀教案
PHP中session和cookie无效的解决方法
ecxel中VLOOKUP函数的用法
如何用HOOK函数关闭IE广告窗口
如何认识和运用函
有关php跨域cookie共享使用方法
小学生英语作文:How to improve your English
如何用Photoshop制作GIF交互动态效果图
如何取广告口号
用Photoshop如何绘制Google Currents图标
The composition of the tree英语作文
The Limitation of The Violence Shot 暴力镜头的限制英语作文
How to Learn English Well 如何学好英语作文(通用6篇)
Excel中的countIf函数如何使用
英语作文Look at the cloud is the weather
How to keep a good relationship with parents英语作文