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)

          主站蜘蛛池模板: 丰顺县| 临潭县| 栾川县| 余江县| 江达县| 鹤庆县| 庆元县| 信丰县| 中牟县| 石门县| 泰州市| 托克逊县| 甘孜县| 三门峡市| 资阳市| 江陵县| 贵定县| 木兰县| 巴东县| 玛曲县| 太原市| 阜宁县| 会宁县| 鄂托克旗| 开化县| 石狮市| 新郑市| 盘锦市| 东台市| 枣庄市| 顺昌县| 望都县| 凌海市| 和田市| 纳雍县| 海林市| 延庆县| 衡山县| 宜兰市| 溧阳市| 长武县|