C#如何捕捉windows鼠标事件?????????

解决方案 »

  1.   

    1:在窗体中添加MouseMove,MouveDown,MouseUp,MouseWheel事件,或重写相应的方法.2:在Application.AddMessageFilter处理整个应用程序的鼠标事件.
      

  2.   

    http://www.codeproject.com/csharp/globalsystemhook.asp
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  3.   

    SetupMouseHook;SetWindowsHookEx;
      

  4.   

    小的知道用Hook,不过本人不是C++程序员,看那些有点费劲
      

  5.   

    你想做什么?C#如何捕捉windows鼠标事件?????????1:在窗体中添加MouseMove,MouveDown,MouseUp,MouseWheel事件,或重写相应的方法.2:在Application.AddMessageFilter处理整个应用程序的鼠标事件.这样还不行????
      

  6.   

    是windows的事件,不是我程序的事件
      

  7.   

    static int hMouseHook = 0;
    HookProc MouseHookProcedure;
    [StructLayout(LayoutKind.Sequential)]
    public class POINT{
    public int x;
    public int y;
    }[StructLayout(LayoutKind.Sequential)]
    public class MouseHookStruct{
    public POINT pt;
    public int hWnd;
    public int wHitTestCode;
    public int dwExtraInfo;
    }[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
    public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
    public static extern bool UnhookWindowsHookEx(int idHook);[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
    public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);  public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
    public MouseHook() 
    {
    Start();
    }~MouseHook() 

    Stop();
    } public void Start()
    {
    if(hMouseHook == 0)
    {
    MouseHookProcedure = new HookProc(MouseHookProc); hMouseHook = SetWindowsHookEx( 14, MouseHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0); if(hMouseHook == 0 )
    {
    Stop();
    throw new Exception("Error");
    }
    }
    }public void Stop()
    {
    bool flag =true;
    if(hMouseHook != 0)
    {
    flag = UnhookWindowsHookEx(hMouseHook);
    hMouseHook = 0;


    if (!flag) throw new Exception("Error");
    }private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
    {
    MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
    // MyMouseHookStruct is result.


    return CallNextHookEx(hMouseHook, nCode, wParam, lParam); 
    }
      

  8.   

    参考这个:HOW TO:在 Visual C# .NET 中设置窗口挂钩http://support.microsoft.com/kb/318804