Пример #1
0
        private void RegisterHotkeys()
        {
            WindowsApi.KeyModifiers modifiers = WindowsApi.KeyModifiers.MOD_CONTROL |
                                                WindowsApi.KeyModifiers.MOD_NOREPEAT;

            _hotkeyIdFullGrid  = this.Handle.ToInt32() ^ (int)modifiers ^ (int)Keys.D1;
            _hotkeyIdCrosshair = this.Handle.ToInt32() ^ (int)modifiers ^ (int)Keys.D2;

            WindowsApi.RegisterHotKey(this.Handle, _hotkeyIdFullGrid, modifiers, Keys.D1);
            WindowsApi.RegisterHotKey(this.Handle, _hotkeyIdCrosshair, modifiers, Keys.D2);
        }
Пример #2
0
        /// <summary>
        ///     Verifica se uma tecla de atalho é válida.
        /// </summary>
        /// <param name="modifier">Tecla de acesso.</param>
        /// <param name="key">Tecla comum.</param>
        /// <returns>Resultado.</returns>
        private static bool IsValidModifierAndKey(WindowsApi.KeyModifiers modifier, Keys key)
        {
            var isValid = true;

            if (modifier == WindowsApi.KeyModifiers.None)
            {
                isValid = false;
            }
            else if (!Regex.IsMatch($"{key}", @"^([A-Z]|D[0-9])$"))
            {
                isValid = false;
            }

            return(isValid);
        }
Пример #3
0
        /// <summary>
        ///     Extrai os valores individuais para teclas de acesso e tecla comum.
        /// </summary>
        /// <param name="shortcut">Tecla de atalho.</param>
        /// <param name="modifier">Tecla de acesso.</param>
        /// <param name="key">Tecla comum.</param>
        private static void ExtractModifierAndKey(Keys shortcut, out WindowsApi.KeyModifiers modifier, out Keys key)
        {
            modifier = WindowsApi.KeyModifiers.None;
            if ((shortcut & Keys.Alt) == Keys.Alt)
            {
                modifier |= WindowsApi.KeyModifiers.Alt;
            }
            if ((shortcut & Keys.Control) == Keys.Control)
            {
                modifier |= WindowsApi.KeyModifiers.Control;
            }
            if ((shortcut & Keys.Shift) == Keys.Shift)
            {
                modifier |= WindowsApi.KeyModifiers.Shift;
            }

            key = shortcut & ~Keys.Alt & ~Keys.Control & ~Keys.Shift;
        }
Пример #4
0
 /// <summary>
 ///     Registra uma tecla de atalho no sistema operacional para uma janela.
 /// </summary>
 /// <param name="hWnd">Handle da janela.</param>
 /// <param name="id">Identificador da tecla de atalho.</param>
 /// <param name="modifiers">Modificador</param>
 /// <param name="key">Tecla</param>
 /// <returns>Sinaliza sucesso na execução da ação.</returns>
 public static bool RegisterHotKey(this IntPtr hWnd, int id, WindowsApi.KeyModifiers modifiers, Keys key)
 {
     return(WindowsApi.RegisterHotKey(hWnd, id, modifiers, key));
 }
Пример #5
0
 /// <summary>
 ///     Evento quando a tecla de atalho é pressionada.
 /// </summary>
 /// <param name="modifiers">Teclas de acesso.</param>
 /// <param name="key">Tecla.</param>
 private void NativeWindowOnKeyPressed(WindowsApi.KeyModifiers modifiers, Keys key)
 {
     _messageBus.Send(new UserActionPoke());
 }