none
Utilizar a mesma Tecla de Função em todo sistema RRS feed

  • Pergunta

  • Bom dia a todos!

    Eu tenho um sistema que contém várias janelas e a qualquer momento se eu pressionar F1 por exemplio ele vai me abrir uma nova janela sobre todas as outras. A ação de apertar uma tecla e abrir está nova janela, eu consegui fazer, o código para fazer isso foi adicionado na MainWindow, MAS, quando eu não estou na MainWindow, ou seja quando estou em outra janela essa ação de apertar F1 não funciona é claro!

    A Dúvida é, como eu faço para "registar" essa ação de apertar F1 e em qualquer parte(qualquer janela) do sistema a mesma vai realizar a ação desejada?

    Obrigado.


    David Ramires


    • Editado David Ramires segunda-feira, 13 de agosto de 2012 13:53
    segunda-feira, 13 de agosto de 2012 13:29

Todas as Respostas

  • Eu consegui fazer assim:

    public partial class MainWindow : Window

        {
            const int WM_KEYUP = 0x0101;     
            const int VK_F1 = 0x70;        

            public MainWindow()
            {
                this.InitializeComponent();     
                ComponentDispatcher.ThreadPreprocessMessage += ComponentDispatcher_ThreadPreprocessMessage;
            }

            void OnCommandExecuted(object sender, ExecutedRoutedEventArgs args)
            {
                MessageBox.Show("HELP");
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                Window1 win = new Window1();
                win.Show();
            }

            private void ComponentDispatcher_ThreadPreprocessMessage(ref MSG msg, ref bool handled)
            {
                if (msg.message == WM_KEYUP)
                {
                    if ((int)msg.wParam == VK_F1)
                        MessageBox.Show("F1!!!!");
                }
            }
        }

    Para Testar, eu criei mais uma nova  Window chamada  Window1, e fiz uma chamada a essa janela, pois quando eu abrir essa  Window1, a MainWindow vai perder o foco e quando eu apertar a tecla F1 ele executa as ações que eu necessite, ou seja em qualquer janela do meu sistema eu posso usar F1 para fazer qualquer coisa

    Alguém tem mais alguma dica/sugestão?

    Obrigado!


    David Ramires

    • Marcado como Resposta David Ramires segunda-feira, 13 de agosto de 2012 17:25
    • Não Marcado como Resposta David Ramires terça-feira, 14 de agosto de 2012 17:54
    segunda-feira, 13 de agosto de 2012 17:25