有关hook窗口消息wm_showwindow来关闭广告,为什么达不到效果啊 我安装的是全局钩子 钩子过程在dll中
LRESULT CALLBACK CallWndProc(
int nCode, // hook code
WPARAM wParam, // current-process flag
LPARAM lParam // address of structure with message data
)
{
CWPSTRUCT *pCwp=NULL;
TCHAR strClassName[127];
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)
{ //判断下pCwp->hwnd是什么
//printf("%d",pCwp->hwnd);
::GetClassName(pCwp->hwnd,strClassName,128);
//IE窗口的类型为IEFrame
if(0==wcscmp(strClassName,L"IEFrame"))
{
hWnd=::GetWindow(pCwp->hwnd,GW_CHILD);
if(hWnd==0)
{ bIsClosed=TRUE;
MessageBox(0,L"1",L"",MB_OK);
}
while(NULL!=hWnd)
{ ::GetClassName(hWnd,strClassName,127);
//IEFrame的子窗口包含窗口类型WorkerW
if(0==wcscmp(strClassName,L"Edit"))
{
//若WorkerW不可见,则一般是广告弹出窗口
if(0==(GetWindowLong(hWnd,GWL_STYLE)&WS_VISIBLE))
{ MessageBox(0,L"2",L"",MB_OK);
bIsClosed=TRUE;
break;
}
break;
}
else
{
bIsClosed=TRUE;
MessageBox(0,L"3",L"",MB_OK);
}
hWnd=::GetWindow(hWnd,GW_HWNDNEXT);
}
}
//若是IE广告弹出窗口,则关闭
if(TRUE==bIsClosed)
{ MessageBox(0,L"关闭广告",L"",MB_OK);
::PostMessage(pCwp->hwnd,WM_CLOSE,0,0);
}
}
}
return CallNextHookEx(gHook,nCode,wParam,lParam);
}