HCBT_CREATEWND 钩子在windows7 下面失效

如题我想用HCBT_CREATEWND钩子去截获所有线程创建窗口的信息,但是我安装了CBT钩子之后,大概只有HCBT_ACTIVATE 和其他的一些能检测到。HCBT_CREATEWND一直抓不到。

是不是我对HCBT_CREATEWND的理解有问题,如果我的钩子安装好了,那么我随便打开一个Winform或者MFC的程序,我都应该截获到这个消息。

求高人指点

作者: qyljcy   发布时间: 2011-06-14

自己顶一个!!!,我找了好久 都是404你懂的,懂你妹啊!!

作者: qyljcy   发布时间: 2011-06-14

给代码

作者: Lactoferrin   发布时间: 2011-06-14

C/C++ code


LRESULT CALLBACK CBTHOOKProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode < 0 || nCode == HC_NOREMOVE)
        return ::CallNextHookEx(g_cbtHook, nCode, wParam, lParam);

        CBT_CREATEWND *cbt;
        CBTACTIVATESTRUCT *cbtact;
        UINT temp=0;
        gsmd.seg=2;
        gsmd.wParam=NULL;
        gsmd.lParam =NULL;
        switch (nCode)
        {
            
            case HCBT_ACTIVATE:
                temp=5;
                
                cbtact=(CBTACTIVATESTRUCT*)lParam;
                if(!IsBadReadPtr(cbtact, 1))
                {
                    gsmd.lParam=(LPARAM)cbtact->hWndActive;
                }
                break;
            case HCBT_CREATEWND:
                temp=3;
        
                break;
            case HCBT_DESTROYWND:
                temp=4;
                break;
            case HCBT_MINMAX:
                temp=1;
                break;
            case HCBT_MOVESIZE:
                temp=0;
                break;
        }

        gcds.dwData=temp;
        SendMessage(g_hWnd, WM_COPYDATA, (WPARAM)wParam, (LPARAM)&gcds);
    return CallNextHookEx(g_cbtHook, nCode, wParam, lParam);
}

作者: qyljcy   发布时间: 2011-06-14

这个是CBT的callback函数,是写在DLL里面的,然后我用sendmessage和外面通信,难道是通信出了问题?

作者: qyljcy   发布时间: 2011-06-14

继续顶,求高手

作者: qyljcy   发布时间: 2011-06-14