Exemplo n.º 1
0
        public void InstallKeyboardHook(LowLevelHookCallback callback)
        {
            if (KeyboardHooked)
            {
                throw new InvalidOperationException("Keyboard hook already installed");
            }

            InvokeAction(new Action(() => {
                HookKeyboard(callback);
            }));
        }
Exemplo n.º 2
0
        public void InstallMouseHook(LowLevelHookCallback callback)
        {
            if (MouseHooked)
            {
                throw new InvalidOperationException("Mouse hook already installed");
            }

            InvokeAction(new Action(() => {
                HookMouse(callback);
            }));
        }
Exemplo n.º 3
0
        private void HookMouse(LowLevelHookCallback callback)
        {
            mouseCallback = callback;

            using Process curProcess      = Process.GetCurrentProcess();
            using ProcessModule curModule = curProcess.MainModule;
            MouseHookProc = SetWindowsHookEx(WH_MOUSE_LL, mouseCallback, GetModuleHandle(curModule.ModuleName), 0);

            if (MouseHookProc == IntPtr.Zero)
            {
                MouseHooked = false;
                throw new Win32Exception();
            }

            MouseHooked = true;
        }
Exemplo n.º 4
0
        private void HookKeyboard(LowLevelHookCallback callback)
        {
            keyboardCallback = callback;

            using Process curProcess      = Process.GetCurrentProcess();
            using ProcessModule curModule = curProcess.MainModule;
            KeyboardHookProc = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardCallback, GetModuleHandle(curModule.ModuleName), 0);

            if (KeyboardHookProc == IntPtr.Zero)
            {
                KeyboardHooked = false;
                throw new Win32Exception();
            }

            KeyboardHooked = true;
        }
Exemplo n.º 5
0
 public static extern IntPtr SetWindowsHookEx(int idHook,
                                              LowLevelHookCallback lpfn, IntPtr hMod, uint dwThreadId);