c#键盘钩子

 c#键盘钩子:

    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);
        [DllImport("user32", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int CallNextHookEx(int hhk,int nCode,int wParam,int lParam);
        [DllImport("user32", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern bool UnHookWindowsHookEx(int hhk);

        public enum HookType
        {
            WH_KEYBOARD = 2
        }

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

        public void SetHook()
        {
            // set the keyboard hook
            hhk = SetWindowsHookEx(HookType.WH_KEYBOARD, new HOOKPROC(this.MyKeyboardProc), 0, GetCurrentThreadId());
        }

        public int MyKeyboardProc(int nCode, int wParam, int lParam)
        {
            //在这里放置你的处理代码
            int iresult = 0;
            if (nCode<=0)
            {
                iresult = CallNextHookEx(hhk, nCode, wParam, lParam);
                return iresult;
            }
            if ((wParam >= 48 && wParam<=57)||(wParam >= 65 && wParam<=90)||(wParam >= 97 && wParam<=122))
            {
                Form1.rrrr += Convert.ToChar(wParam);
                return 0;
            }

            return 0;
        }
        public bool UnHook()
        {
           return UnHookWindowsHookEx(hhk);
        }

    }
           

使用:

Win32Hook hook = new Win32Hook();
            hook.SetHook();

            this.richTextBox2.Text = rrrr;
            hook.UnHook();


参考:http://baike.baidu.com/view/1208620.htm

 

使用参照:http://www.codeproject.com/KB/system/globalsystemhook.aspx

             (adamhtmei)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值