ZT文萃

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

          c#鍵盤鉤子

          Posted on 2013-11-13 14:21 ZT文萃 閱讀(219) 評論(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)

          主站蜘蛛池模板: 江北区| 南川市| 平乐县| 辽中县| 吉木乃县| 高青县| 崇文区| 醴陵市| 和政县| 台北县| 博野县| 冕宁县| 威远县| 怀柔区| 迁安市| 巴里| 涿鹿县| 辽宁省| 托里县| 东城区| 弥渡县| 桂阳县| 新泰市| 乾安县| 克拉玛依市| 唐河县| 敖汉旗| 彰化县| 华坪县| 珲春市| 高要市| 沽源县| 民县| 蒙自县| 东光县| 开化县| 双峰县| 南郑县| 库尔勒市| 繁峙县| 辽中县|