Exemplo n.º 1
0
        public static IntPtr KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0 || MouseKeyboardEventHandler.s_threadRecorder == null || MainWindow.s_mainWin.IsRecording == false)
            {
                return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
            }

            KeyboardEvents  kEvent = (KeyboardEvents)wParam.ToInt32();
            KBDLLHOOKSTRUCT kbd    = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));

            int         scanCode = (int)kbd.scanCode;
            VirtualKeys vk       = (VirtualKeys)kbd.vkCode;

            if (vk == VirtualKeys.VK_PAUSE && kEvent == KeyboardEvents.KeyDown)
            {
                s_bPauseMouseKeyboard = !s_bPauseMouseKeyboard;

                if (s_bPauseMouseKeyboard == true)
                {
                    NativeMethods.PostMessage(MainWindow.s_windowHandle, (int)MainWindow.UiThreadTask.PauseRecording, 0, 0);
                }
                else
                {
                    NativeMethods.PostMessage(MainWindow.s_windowHandle, (int)MainWindow.UiThreadTask.Active, 0, 0);
                }
            }

            if (s_bPauseMouseKeyboard == false)
            {
                MouseKeyboardEventHandler.RecordKey(kEvent, vk, scanCode);
            }

            return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }
Exemplo n.º 2
0
        public static IntPtr KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0)
            {
                return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
            }

            KeyboardEvents  kEvent = (KeyboardEvents)wParam.ToInt32();
            KBDLLHOOKSTRUCT kbd    = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));

            int         scanCode = (int)kbd.scanCode;
            VirtualKeys vk       = (VirtualKeys)kbd.vkCode;

            if (vk == VirtualKeys.VK_PAUSE && kEvent == KeyboardEvents.KeyDown)
            {
                s_bPausing = !s_bPausing;
            }

            // Record encoded key virtual key
            if (s_bPausing == false)
            {
                MouseKeyboardEventHandler.RecordKey(kEvent, vk, scanCode);
            }

            return(NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }