ACPAddIn.ThisAddIn.KeyboardHookProc C# (CSharp) Method

KeyboardHookProc() private method

private KeyboardHookProc ( int nCode, IntPtr wParam, IntPtr lParam ) : int
nCode int
wParam IntPtr
lParam IntPtr
return int
        private int KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            int tempHandle = (int)GetActiveWindow();

            // The lparam that Windows passes us is a pointer to a
            // KbDllHookStruct.
            KbDllHookStruct kbDllHookStruct = (KbDllHookStruct)Marshal.PtrToStructure(lParam, typeof(KbDllHookStruct));

            if (autoCompleteForm.Visible)
            {
                // Log only UI shortcut keys
                if ((wParam == (IntPtr)WM.KEYDOWN)
                    || (wParam == (IntPtr)WM.SYSKEYDOWN))
                {
                    // Logging for user testing
                    appendLogString(kbDllHookStruct.vkCode);
                }
            }

            // Response to keystrokes only if the active window is the text-editor (Microsoft Word)
            if (handle == tempHandle && isEnabled)
            {
                if ((wParam == (IntPtr)WM.KEYDOWN)
                    || (wParam == (IntPtr)WM.SYSKEYDOWN))
                {
                    if (extMode.isExtensionMode())
                    {
                        // Logging for user testing
                        appendLogString(kbDllHookStruct.vkCode);

                        bool result = handleExtensionMode(kbDllHookStruct);
                        bool isBlockKey = !result;

                        if (isBlockKey)
                        {
                            extendSuggestionForm.fadeOut();
                            return -1;
                        }
                    }
                    else
                    {
                        bool result = handleRequestSuggestionMode(kbDllHookStruct);
                        bool isBlockKey = !result;

                        if (isBlockKey)
                        {
                            return -1;
                        }
                    }
                }
            }

            return CallNextHookEx(keyboardHookHandle, nCode, wParam, lParam);
        }