请思归等高手看看hook弹出的MessageBox窗体问题!
监控程序的目的是来Hook捕捉XP系统弹出的所有MessageBox窗体。
先写了一个hook的dll,然后做了一个HookSample的窗体程序来做测试,在hook HookSample.exe程序弹出的MessageBox的时候,在关闭MessageBox的时候才能hook到,而不是一弹出MessageBox就能hook到?而且hook不到自己做测试写的其他程序弹出的MessageBox窗体,但是能hook到QQ的消息对话框,但也是在qq消息框关闭之后才能捕捉到。
Hook的DLL主要代码如下:
安装钩子函数:
BOOL SetHookWindows()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HHOOK hhookWindows = ::SetWindowsHookEx (WH_CALLWNDPROC, hkWindowsProc,::AfxGetInstanceHandle(),0);
}
钩子函数:
LRESULT CALLBACK hkWindowsProc( int nCode,WPARAM wParam,LPARAM lParam)
{
LPMSG pmsg = (LPMSG)lParam;
UINT uMsg = pmsg->message;
HWND hWnd = pmsg->hwnd;
char *name=new char[128];
if (pmsg!=NULL)
{
switch(uMsg)
{
case WM_SHOWWINDOW:
GetWindowText(hWnd,name,64);
.....
break;
default:
break;
}
}
return CallNextHookEx(hhookWindows, nCode, wParam, lParam); /*TRUE*/
}