如何拦截其它进程的消息?
我用HOOK WH_CALLWNDPROC可以WM_DESTROY这个消息,
但是无法拦截,LRESULT CALLBACK CallWndProc(
 int nCode,      // hook code
 WPARAM wParam,  // current-process flag
 LPARAM lParam   // address of structure with message data
 )
{
CWPSTRUCT *pCwp = NULL; 

if (nCode < 0) 

return CallNextHookEx(h1Hook, nCode, wParam, lParam); 


if (NULL != lParam) 

pCwp = (CWPSTRUCT *)lParam; 
if (pCwp->message==WM_DESTROY) 

pCwp->message=0;
                        return 1;
}
if(pCwp->message==WM_NCDESTROY)
{
            
pCwp->message=0;
                        return 1;
}
}
return CallNextHookEx(h1Hook, nCode, wParam, lParam);
}直接return 1了 但是目标窗口还是接收到WM_DESTROY消息!
有啥方法屏蔽掉这个消息?

解决方案 »

  1.   

    The CallWndProc hook procedure can examine the message, but it cannot modify it. After the hook procedure returns control to the system, the message is passed to the window procedure. 就是说不能修改消息it cannot modify it,还是要passed to the window procedure. 
      

  2.   

    CallWndProc、GetMsgProc都不能直接阻止窗口收到消息。用SetWindowLong把窗口函数地址改到你自己的代码中,这样试试。
      

  3.   

    HOOK CBT里有 WM_DESTROY这个消息
      

  4.   

    在PreTranslateMessage里面拦截。
    发现WM_DESTROY就设成0
      

  5.   

    使用子类化技术,遇到WM_DESTROY不处理就返回,干脆连WM_CLOSE也拦截了,肯定可以的