Ejemplo n.º 1
0
 private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
 {
     //KeyMsg m = (KeyMsg)Marshal.PtrToStructure(lParam, typeof(KeyMsg));
     dataTable.Rows.Add(nCode, wParam, lParam);
     dgvLogKeyboard.DataSource = dataTable;
     return(ClsCommon.CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 卸载键盘钩子
        /// </summary>
        public void KeyboardHookStop()
        {
            bool retKeyboard = true;
            bool retMouse    = true;

            if (hKeyboardHook != 0)
            {
                retKeyboard   = ClsCommon.UnhookWindowsHookEx(hKeyboardHook);
                hKeyboardHook = 0;
            }
            if (!(retKeyboard))
            {
                throw new Exception("UnhookWindowsHookEx failed.");
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 安装键盘钩子
 /// </summary>
 public void KeyboardHookStart()
 {
     if (hKeyboardHook == 0)
     {
         // 创建HookProc实例
         KeyboardHookProcedure = new ClsCommon.HookProc(KeyboardHookProc);
         // 设置线程钩子
         //idHook=2 线程钩子 idHook=13 全局钩子
         hKeyboardHook = ClsCommon.SetWindowsHookEx(2, KeyboardHookProcedure, IntPtr.Zero,
                                                    ClsCommon.GetCurrentThreadId());
         //hKeyboardHook = ClsCommon.SetWindowsHookEx(13, KeyboardHookProcedure,
         //    Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
         // 如果设置钩子失败
         if (hKeyboardHook == 0)
         {
             KeyboardHookStop();
             throw new Exception("SetWindowsHookEx failed.");
         }
     }
 }