private static IntPtr HookCallback( int nCode, IntPtr wParam, IntPtr lParam) { int vkCode = Marshal.ReadInt32(lParam); if ((Keys)vkCode == Keys.ControlKey || (Keys)vkCode == Keys.LControlKey || (Keys)vkCode == Keys.RControlKey) { _CtrlPressed = wParam == (IntPtr)WM_KEYDOWN; } bool oldValue = false; if (KeysUnderLook.ContainsKey((Keys)vkCode)) { oldValue = KeysUnderLook[(Keys)vkCode]; KeysUnderLook[(Keys)vkCode] = wParam == (IntPtr)WM_KEYDOWN; } EventHandler <ResoavEventArgs> handler = ResoavHookKey; if (handler != null && _CtrlPressed && !((Keys)vkCode == Keys.ControlKey || (Keys)vkCode == Keys.LControlKey || (Keys)vkCode == Keys.RControlKey) && KeysUnderLook.ContainsKey((Keys)vkCode) && oldValue == false && KeysUnderLook[(Keys)vkCode] == true) { Console.WriteLine(String.Format("{0} - {1} - {2}", (Keys)vkCode, wParam == (IntPtr)WM_KEYDOWN ? "Down" : "Up", lParam)); var arg = new ResoavEventArgs((Keys)vkCode); handler(null, arg); } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
void InterceptKeys_ResoavHookKey(object sender, ResoavEventArgs e) { //Keys.D1 = 49 //throw new NotImplementedException(); Console.WriteLine("Activate timer number: " + e.Key); if (spTimersPanel.Children.Count > (int)e.Key - 49) { var ch = (TimerControl)spTimersPanel.Children[(int)e.Key - 49]; ch.DoAction(); } }