private static IntPtr SetHook(Win32API.LowLevelKeyboardProc proc) { using (Process curProcess = Process.GetCurrentProcess()) using (ProcessModule curModule = curProcess.MainModule) { return(Win32API.SetWindowsHookEx(WH_KEYBOARD_LL, proc, Win32API.GetModuleHandle(curModule.ModuleName), 0)); } }
public KeyboardGrabber(BlockingCollection <char> queue) { this.queue = queue; Win32API.GetKeyboardState(keys); // store callback pointer to long-living memory, so it wont be garbage collected callback = HookCallback; hook_id = SetHook(callback); }