您的位置:首页 > 编程语言 > C#

【转】C#鼠标钩子

2008-04-20 21:38 302 查看

using System;


using System.Windows.Forms;


using System.Runtime.InteropServices;


namespace WindowsApplication1




...{


    public partial class Form1 : Form




    ...{


        public Form1()




        ...{


            InitializeComponent();


        }


         


        private void Form1_Load(object sender, EventArgs e)




        ...{


            Win32Hook hook = new Win32Hook();


            hook.onMouseChange += new EventHandler(hook_onMouseChange);


            hook.SetHook();


        }




        void hook_onMouseChange(object sender, EventArgs e)




        ...{


            this.Text = Cursor.Position.ToString();


        }


    }


    public class Win32Hook




    ...{




        [DllImport("kernel32")]


        public static extern int GetCurrentThreadId();




        [DllImport("user32",CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]


        public static extern int SetWindowsHookEx(


            HookType idHook,


            HOOKPROC lpfn,


            int hmod,


            int dwThreadId);




        public enum HookType




        ...{


            WH_GETMESSAGE = 3


        }




        public delegate int HOOKPROC(int nCode, int wParam, int lParam);




        public event System.EventHandler onMouseChange;




        public void SetHook()




        ...{


            SetWindowsHookEx(HookType.WH_GETMESSAGE,


                new HOOKPROC(this.MyKeyboardProc),


                0,


                GetCurrentThreadId());


        }




        public int MyKeyboardProc(int nCode, int wParam, int lParam)




        ...{


            if (onMouseChange != null)




            ...{


                onMouseChange(null, null);


            }


            return 0;


        }


    }


}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# hook null user