private static bool CheckShourcut() { if (shortcut == Keys.None && mouseShortcut == MouseButtons.None) { return(false); } bool mouseSet = mouseButtons == mouseShortcut; bool modifiersSet = (modifierKeys & Keys.Modifiers) == (shortcut & Keys.Modifiers); bool keySet = true; Keys key = (shortcut & Keys.KeyCode); if (key != Keys.None) { bool keydata = false; keys.TryGetValue(key, out keydata); keySet = keydata; } bool result = false; //System.Diagnostics.Trace.Write("Mouse : " + mouseButtons.ToString()); //System.Diagnostics.Trace.Write("hook catched : " + mouseSet + modifiersSet + keySet); if (mouseSet && modifiersSet && keySet) { TaskConveyer.QueueTask("hook", HookCalledThreadProcAdv, null); result = true; mouseButtonsToSkipUp = mouseButtons; } return(result); }
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (ignoreHookProcessing) { return(CallNextHookEx(hookID, nCode, wParam, lParam)); } if (nCode >= 0) { Keys key; if (wParam == (IntPtr)WM_KEYDOWN) { modifierKeys = Control.ModifierKeys; key = (Keys)Marshal.ReadInt32(lParam); keys[key] = true; if (Keys.C == key && Keys.Control == modifierKeys && KeyboardHook.ControlCC ) { if (controlCClickTime + ticksInSecond > DateTime.Now.Ticks) { TaskConveyer.QueueTask("hook", HookCalledThreadProc, null); controlCClickTime = 0; } else { controlCClickTime = DateTime.Now.Ticks; } } if (Keys.Insert == key && Keys.Control == modifierKeys && KeyboardHook.ControlInsIns ) { if (controlInsClickTime + ticksInSecond > DateTime.Now.Ticks) { TaskConveyer.QueueTask("hook", HookCalledThreadProc, null); controlInsClickTime = 0; } else { controlInsClickTime = DateTime.Now.Ticks; } } CheckShourcut(); } else if (wParam == (IntPtr)WM_KEYUP) { key = (Keys)Marshal.ReadInt32(lParam); keys[key] = false; } //System.Diagnostics.Trace.Write("Keys : " + key.ToString()); } return(CallNextHookEx(hookID, nCode, wParam, lParam)); }