Exemplo n.º 1
0
        /// <summary>
        /// Precesa el comporatiento de la aplicación al presionarse una tecla.
        /// </summary>
        /// <param name="sender">Listener del teclado</param>
        /// <param name="e">Información de la tecla presionada</param>
        private void _listener_OnKeyPressed(object sender, KeyPressedArgs e)
        {
            try
            {
                if (e.KeyPressed != Key.Enter)
                {
                    // Si presionamos SHIFT + F1
                    if (_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_SHIFT) && e.KeyPressed == Key.F1)
                    {   // Si La ventana de información detallada está abierta la cerramos
                        if (InfoBrowser.IsVisible)
                        {
                            CloseWindowBrowser(InfoBrowser);
                        }
                        // Abrimos una ventana con la web personalizada.
                        OpenWindowBrowser(CustomBrowser, _service.UrlNavegarCustom, InfoBrowser);
                    }
                    // Si presionamos SHIFT + F2
                    else if (_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_SHIFT) && e.KeyPressed == Key.F2)
                    {
                        // Cerramos la ventana con la web personalizada
                        CloseWindowBrowser(CustomBrowser);
                    }
                    // Si la tecla presioanada es numérica
                    else if (!_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_SHIFT) &&
                             (e.KeyPressed >= Key.D0 && e.KeyPressed <= Key.D9 || e.KeyPressed >= Key.NumPad0 && e.KeyPressed <= Key.NumPad9))
                    {
                        // Almacenamos el valor de la tecla.
                        StoreKey(e.KeyPressed);
                    }
                }
                else if (!CustomBrowser.IsVisible && !string.IsNullOrEmpty(_keyData))
                {
                    var enteredNumbers = _keyData;
                    Task.Run(() => ProccessEnterKey(enteredNumbers)).ContinueWith(t =>
                    {
                        if (t.Result)
                        {
                            OpenWindowBrowser(InfoBrowser, _service.UrlNavegar, CustomBrowser);
                        }
                    }, TaskScheduler.FromCurrentSynchronizationContext());

                    // Limpiamos _keyData para otro proceso.
                    _keyData = string.Empty;
                    SendKeyEnter();
                }
                else
                {
                    // Siempre que se presiona ENTER se limpia _keyData
                    _keyData = string.Empty;
                }
            }
            catch (MySqlException mysqle)
            {
                //if (!mysqle.Message.Contains("Timeout"))
                //{
                //    MessageBox.Show("Ha ocurrido un error. Comuníquese con el Administrador.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                //}
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Ha ocurrido un error. Comuníquese con el Administrador.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        /// <summary>
        /// Precesa el comporatiento de la aplicación al presionarse una tecla.
        /// </summary>
        /// <param name="sender">Listener del teclado</param>
        /// <param name="e">Información de la tecla presionada</param>
        private void _listener_OnKeyPressed(object sender, KeyPressedArgs e)
        {
            try
            {
                if (e.KeyPressed != Key.Enter &&
                    !(_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_CONTROL) && e.KeyPressed == Key.M))
                {
                    #region Low level Keyboard for HotKey

                    // Si presionamos SHIFT + F1
                    if (_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_SHIFT) && e.KeyPressed == Key.F1)
                    {   // Si La ventana de información detallada está abierta la cerramos
                        if (InfoBrowser.IsVisible)
                        {
                            CloseWindowBrowser(InfoBrowser);
                        }
                        // Abrimos una ventana con la web personalizada.
                        OpenWindowBrowser(CustomBrowser, _service.UrlNavegarCustom, InfoBrowser);
                    }
                    // Si presionamos SHIFT + F3
                    else if (_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_SHIFT) && e.KeyPressed == Key.F3)
                    {
                        // Si La ventana de información detallada está abierta la cerramos
                        if (InfoBrowser.IsVisible)
                        {
                            CloseWindowBrowser(InfoBrowser);
                        }

                        //Si esta abierta la ventana de custom browser la cerramos
                        if (CustomBrowser.IsVisible)
                        {
                            CloseWindowBrowser(CustomBrowser, _service.CachingNavegationCustom);
                        }

                        // Abrimos una ventana con la web personalizada.
                        OpenWindowBrowser(CustomBrowserR, _service.UrlRecomendaciones, InfoBrowser);
                    }
                    // Si presionamos SHIFT + F2
                    else if (_listener.IsHardwareKeyDown(LowLevelKeyboardListener.VirtualKeyStates.VK_SHIFT) && e.KeyPressed == Key.F2)
                    {
                        // Cerramos la ventana con la web personalizada
                        CloseWindowBrowser(CustomBrowser, _service.CachingNavegationCustom);
                        CloseWindowBrowser(CustomBrowserR);
                    }

                    #endregion Low level Keyboard for HotKey

                    // Almacenamos el valor de la tecla.
                    if (e.KeyPressed.IsDigit(_listener) || e.KeyPressed.IsCharacter(_listener))
                    {
                        StoreKey(e.KeyPressed);
                    }
                }
                else if (!CustomBrowser.IsActive && !CustomBrowserR.IsActive && !string.IsNullOrEmpty(_keyData))
                {
                    var entryData = _keyData;
                    Task.Run(() => ProccessEnterKey(entryData)).ContinueWith(t =>
                    {
                        if (t.Result)
                        {
                            System.Threading.Thread.Sleep(_tiempoEspera);

                            OpenWindowBrowser(InfoBrowser, _service.UrlNavegar, CustomBrowser);
                        }
                    }, TaskScheduler.FromCurrentSynchronizationContext());

                    // Limpiamos _keyData para otro proceso.
                    _keyData = string.Empty;
                    // SendKeyEnter();
                }
                else
                {
                    // Siempre que se presiona ENTER se limpia _keyData
                    _keyData = string.Empty;
                }
            }
            catch (MySqlException mysqle)
            {
                //if (!mysqle.Message.Contains("Timeout"))
                //{
                //    MessageBox.Show("Ha ocurrido un error. Comuníquese con el Administrador.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                //}
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Ha ocurrido un error. Comuníquese con el Administrador.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }