ZT文萃

          本博不原創,轉帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
          posts - 93, comments - 5, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          c#鍵盤鉤子

          Posted on 2013-11-13 14:21 ZT文萃 閱讀(212) 評論(0)  編輯  收藏 所屬分類: 前臺
          http://wuqinzhong.blog.163.com/blog/static/45222312009101711583439/

          c#鍵盤鉤子  

          2009-11-17 11:58:34|  分類: 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)

          主站蜘蛛池模板: 磐安县| 郯城县| 建始县| 云浮市| 海伦市| 平利县| 永州市| 峨眉山市| 霍州市| 林州市| 淮阳县| 广水市| 通城县| 武穴市| 云安县| 昌邑市| 新郑市| 会昌县| 霍林郭勒市| 彭泽县| 建始县| 秀山| 南郑县| 普安县| 全南县| 康保县| 靖安县| 尚义县| 松溪县| 温泉县| 襄城县| 宜良县| 靖州| 石台县| 永丰县| 隆回县| 蓝山县| 辰溪县| 确山县| 田林县| 广东省|