private void HookKeyboard() { _keyboardProc = keyboardHandler; using (var process = Process.GetCurrentProcess()) { using (var module = process.MainModule) { var moduleHandler = NativeMethods.GetModuleHandle(module.ModuleName); _previousKeyboardHandler = NativeMethods.SetWindowsHookEx( NativeMethods.WH_KEYBOARD_LL, _keyboardProc, moduleHandler, 0); if (_previousKeyboardHandler.IsInvalid) { throw new Win32Exception(Marshal.GetLastWin32Error()); } } } }
internal static extern IntPtr CallNextHookEx(SafeWinHandle hhk, int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);