程序运行没有任何问题,除了非客户区域的消息,其他的都能捕捉到,WM_LBUTTONDOWN也可以在其他窗口的标题栏上捕捉到。
但现在我想判断鼠标是否在标题栏上点击而不是随意的点击,怎么都捕捉不到WM_NCLBUTTONDOWN消息。MSDN上说这个消息会被所在窗口的进程所捕获,没看明白怎么回事。望指点一下。MouseHookProcedure = new HookProc(MouseHookProc);
            IntPtr pInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().ManifestModule);
            hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, (HookProc)MouseHookProcedure, pInstance, 0);
            if (hMouseHook == 0)
            {
                MessageBox.Show("SetWindowsHookEx(Mouse) Failed");
                return;
            }
这里有个过去的帖子,里面的问题和我一样,虽然问题解决了却没有答案,郁闷死。
http://topic.csdn.net/t/20010722/15/204237.html#r_1299772

解决方案 »

  1.   

    你是怎么做的?
     switch(wParam)  
     {  
       case   WM_NCLBUTTONDOWN:  
    }
      

  2.   

    对,和楼上写得一样
    public int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
            {
                if (nCode < 0)
                {
                    return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
                }            //MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
                //MyMouseHookStruct.pt.x;
                //MyMouseHookStruct.pt.y;
                //MyMouseHookStruct.mouseData
                            switch (wParam)
                {
                    case WM_LBUTTONDOWN:
                        
                        break;
                    case WM_LBUTTONUP:
                        
                        break;
                    case WM_MOUSEMOVE:
                        
                        break;
                    default: break;
                }
                return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
            }
      

  3.   

    帖子里忘记加这行了,case  WM_NCLBUTTONDOWN:, 但我代码里有,检测不到break;不知道怎么才能得到。查了msdn,有个WM_NCXBUTTONDOWN的消息,不知道有没有用。 
      

  4.   

    MouseHookProc的代码都贴出来,你怎么检测的?
      

  5.   

    直接在里面添加一个messagebox.show("done")检测的,就这样。case WM_NCLBUTTONDOWN:
    MessageBox.Show("Done!");
    break;
      

  6.   

    case WM_NCLBUTTONDOWN放在switch 的最开始没?
      

  7.   

    话说我现在也在做鼠标点击消息的hook,我想问的是((PMSLLHOOKSTRUCT)lParam)->pt是屏幕坐标吗?