Пример #1
0
            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);
            }
Пример #2
0
            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));
            }