public void UninstallHook() { if (KeyboardHookLib._hHookValue == 0 || !KeyboardHookLib.UnhookWindowsHookEx(KeyboardHookLib._hHookValue)) { return; } KeyboardHookLib._hHookValue = 0; }
public void InstallHook(KeyboardHookLib.ProcessKeyHandle clientMethod) { KeyboardHookLib._clientMethod = clientMethod; if (KeyboardHookLib._hHookValue != 0) { return; } this._KeyBoardHookProcedure = new KeyboardHookLib.HookHandle(KeyboardHookLib.OnHookProc); this._hookWindowPtr = KeyboardHookLib.GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName); KeyboardHookLib._hHookValue = KeyboardHookLib.SetWindowsHookEx(13, this._KeyBoardHookProcedure, this._hookWindowPtr, 0); if (KeyboardHookLib._hHookValue != 0) { return; } this.UninstallHook(); }
private static int OnHookProc(int nCode, int wParam, IntPtr lParam) { if (nCode >= 0) { KeyboardHookLib.HookStruct structure = (KeyboardHookLib.HookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookLib.HookStruct)); if (KeyboardHookLib._clientMethod != null && wParam == 256) { bool handle = false; KeyboardHookLib._clientMethod(structure, out handle); if (handle) { return(1); } } } return(KeyboardHookLib.CallNextHookEx(KeyboardHookLib._hHookValue, nCode, wParam, lParam)); }