public static void Hook(Action callback) { using (Process curProcess = Process.GetCurrentProcess()) using (ProcessModule curModule = curProcess.MainModule) { _hookID = User32KeyboardHook.SetWindowsHookEx(WH_KEYBOARD_LL, _proc, Kernel32.GetModuleHandle(curModule.ModuleName), 0); } User32KeyboardHook.AlternativeAltTabBehavior = callback; }
private static IntPtr HookCallback(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam) { if (nCode >= 0 && (wParam == (IntPtr)WM_SYSKEYUP || wParam == (IntPtr)WM_SYSKEYDOWN)) { int vkCode = lParam.vkCode; if (vkCode == 9 && lParam.flags == 32) { if (User32KeyboardHook.AlternativeAltTabBehavior != null) { User32KeyboardHook.AlternativeAltTabBehavior(); } return(new IntPtr(1)); } } return(CallNextHookEx(_hookID, nCode, wParam, ref lParam)); }
public static void UnHook() { User32KeyboardHook.UnhookWindowsHookEx(_hookID); }