public static HotkeyHandler Create(Keys key, int modifiers, HotKeyEventHandler eventHandler) { HotkeyHandler handler = new HotkeyHandler(); try { handler._hookID = GlobalAddAtom(Thread.CurrentThread.ManagedThreadId.ToString("X8") + handler.Name); RegisterHotKey(handler.Handle, handler._hookID, modifiers, (int)key); } catch { if (handler._hookID != 0) { GlobalDeleteAtom(handler._hookID); } return(null); } handler.OnHotKeyEvent += eventHandler; return(handler); }
private void RegisterHotkeys() { SettingsSection settings = (SettingsSection)ConfigurationManager.GetSection("settings"); if (settings != null) { if (_enterOTPHandler != null) { _enterOTPHandler.Dispose(); _enterOTPHandler = null; } if (settings.EnterOTP.Enabled) { try { if (string.IsNullOrEmpty(settings.EnterOTP.Key)) { MessageBox.Show("Must specify a key to register HotKey for Enter OTP"); } else { _enterKeyDelay = settings.EnterOTP.EnterKeyDelay; _enterOTPHandler = HotkeyHandler.Create((Keys)Enum.Parse(typeof(Keys), settings.EnterOTP.Key, true), (settings.EnterOTP.Alt ? MOD_ALT : 0) | (settings.EnterOTP.Ctrl ? MOD_CONTROL : 0) | (settings.EnterOTP.Win ? MOD_WIN : 0), _enterOTPEvent_HotKeyEventHandler); } } catch (Exception e) { _enterOTPHandler = null; MessageBox.Show("Failed registering Enter OTP hotkey.\r\n" + e.Message); } } if (_incrementSessionHandler != null) { _incrementSessionHandler.Dispose(); _incrementSessionHandler = null; } if (settings.IncrementSession.Enabled) { try { if (string.IsNullOrEmpty(settings.EnterOTP.Key)) { MessageBox.Show("Must specify a key to register HotKey for Increment Session"); } else { _incrementSessionHandler = HotkeyHandler.Create((Keys)Enum.Parse(typeof(Keys), settings.IncrementSession.Key, true), (settings.IncrementSession.Alt ? MOD_ALT : 0) | (settings.IncrementSession.Ctrl ? MOD_CONTROL : 0) | (settings.IncrementSession.Win ? MOD_WIN : 0), _incrementSessionEvent_HotKeyEventHandler); } } catch (Exception e) { _incrementSessionHandler = null; MessageBox.Show("Failed registering Increment Session hotkey.\r\n" + e.Message); } } } }