我对钩子的理解是:所有窗口消息都必须经过钩子(如果有的话),经过钩子处理后才把消息送给所有者,我试图把消息取消,查MSDN好像没有与之相关的函数,不知怎样才能解决呢?(应该可以的,在一本书上看到过,不过忘了:)),谁能说说?

解决方案 »

  1.   

    Use PM_REMOVE flat on the last parameter of PeekMessage API function
      

  2.   

    程序代码:
    LRESULT __declspec(dllexport)__stdcall  CALLBACK LowLevelMouseProc(
                                int nCode, 
                               WPARAM wParam, 
                                LPARAM lParam)
    {
     CString str;
     str="ASGASDG";
     if(wParam==WM_LBUTTONDOWN)
     {
    MSLLHOOKSTRUCT *Info=(MSLLHOOKSTRUCT*)lParam;
    UnhookWindowsHookEx(hkb);
    //BOOL SULT;
    //SULT=::PeekMessage((MSG*)lParam,NULL,0, 0,PM_REMOVE);
    //str.Format("%d",SULT);
    // ::SendMessage(::WindowFromPoint(Info->pt),WM_NULL,0,0);
    ::AfxMessageBox(str);
     }
     LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam ); return  RetVal;}你是说不CallNextHookEx( hkb, nCode, wParam, lParam );
    不行的,我试过了
      

  3.   

    if(wParam==WM_LBUTTONDOWN)
     {
    MSLLHOOKSTRUCT *Info=(MSLLHOOKSTRUCT*)lParam;
    UnhookWindowsHookEx(hkb);
    //BOOL SULT;
    //SULT=::PeekMessage((MSG*)lParam,NULL,0, 0,PM_REMOVE);
    //str.Format("%d",SULT);
    // ::SendMessage(::WindowFromPoint(Info->pt),WM_NULL,0,0);
    ::AfxMessageBox(str);
                       wParam=0;  ------给它弄成0~不让它传出去~
     }
      

  4.   

    http://www.csdn.net/expert/topic/1046/1046911.xml?temp=.7867395