Beispiel #1
0
 public void SetHook()
 {
     hookThread = new Thread(() =>
     {
         hookHandle          = HookImports.SetWindowsHookEx(hookId, proc, IntPtr.Zero, 0);
         HookImports.MSG msg = new HookImports.MSG();
         while (HookImports.GetMessage(ref msg, IntPtr.Zero, 0, 0))
         {
             HookImports.TranslateMessage(ref msg);
             HookImports.DispatchMessage(ref msg);
         }
     })
     {
         Priority = ThreadPriority.Highest
     };
     hookThread.Start();
 }
Beispiel #2
0
        private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0)
            {
                return(HookImports.CallNextHookEx(Instance.hookHandle, nCode, wParam, lParam));
            }

            try
            {
                InputType input = new InputType();
                input.Init(nCode, wParam, lParam);
                Instance.InputRegisterd?.Invoke(Instance, input);
                if (input.Block)
                {
                    return(new IntPtr(-1));
                }
            }
            catch (Exception e)
            {
                Instance.ExceptionRaised?.Invoke(Instance, e);
            }

            return(HookImports.CallNextHookEx(Instance.hookHandle, nCode, wParam, lParam));
        }
Beispiel #3
0
 public void RemoveHook()
 {
     HookImports.UnhookWindowsHookEx(hookHandle);
     hookThread.Abort();
 }