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);
        }
Example #2
0
        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);
                    }
                }
            }
        }