private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (hookForm.Handle != GetForegroundWindow()) { if (nCode >= 0 && ((wParam == (IntPtr)WM_KEYDOWN) || (wParam == (IntPtr)S_WM_KEYDOWN))) { int vkCode = Marshal.ReadInt32(lParam); bool bCtrl = (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)); bool bAlt = (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)); bool bShift = (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)); Keys hookKey = (Keys)vkCode; hookKey = (bCtrl) ? ((Keys.Control | hookKey)) : hookKey; hookKey = (bAlt) ? ((Keys.Alt | hookKey)) : hookKey; hookKey = (bShift) ? ((Keys.Shift | hookKey)) : hookKey; Debug.Print($"hookKey {hookKey} {bCtrl} {bAlt} {bShift}"); if (!bShortcutPressed && dicTest.ContainsValue(hookKey)) { hookForm.OnKeyDown(new System.Windows.Forms.KeyEventArgs(hookKey)); bShortcutPressed = true; Debug.Print($"{bShortcutPressed}"); } } if (nCode >= 0 && (((wParam == (IntPtr)WM_KEYUP) || (wParam == (IntPtr)S_WM_KEYUP)))) { bShortcutPressed = false; Debug.Print($"{bShortcutPressed}"); } } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (hookForm.Handle != GetForegroundWindow()) { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); bool bCtrl = (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)); bool bAlt = (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)); bool bShift = (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)); Keys hookKey = (Keys)vkCode; hookKey = (bCtrl) ? ((Keys.Control | hookKey)) : hookKey; hookKey = (bAlt) ? ((Keys.Alt | hookKey)) : hookKey; hookKey = (bShift) ? ((Keys.Shift | hookKey)) : hookKey; if (dicTest.ContainsValue(hookKey)) { hookForm.OnKeyDown(new System.Windows.Forms.KeyEventArgs(hookKey)); } } } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }