Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pmaster

[Resolvido] Detectar teclas

Mensagens Recomendadas

pmaster

Boa tarde pessoal

Eu tenho um problema, precisava de detectar o precionamento de 2 teclas pode ser em simultaeo ou não. Não tem a ver com combinações de teclas para atalhos.. É como se usa-se 2 backgoundworkers ou 2 delegants.. mas não sei sequer começar com isto.

É como se quisesse por 2 backgoundworkers ou 2 delegants á escuta de precionamento de teclas, pra que eu possa usar 2 teclas em simultaneo para 2 acções diferentes.

Obrigado ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fLaSh_PT

Bem;

Deves ir por passos.. primeiro investigar como capturas a teclas, e só depois deves pensar em como implementar um mecanismo para o efeito..

Está a falar em "Workers" e "Delegates" que não tem nada a ver com capturar as teclas..

Para capturar as teclas tens de ter em conta algumas situações:

Se a aplicação está oculta, deves implementar um sistema por subclasses (API).

Caso esteja uma "Form" visível é mais fácil, podes capturar a partir do evento "Form KeyPress", no entanto a "Form" tem de estar visível e activa..

Compr.


Making the impossible possible and pwing the world on db at a time.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmaster

fLaSh_PT a captação das teclas precionadas já sei fazer até bem usando o key press ou Protected Overrides Function ProcessCmdKey

Agora sei executar um delegante ou um backgoundwoker. Mas dei a ideia de usar um destes pra poder usar 2 teclas em simultaneo para 2 acções distintas, mas se houver outra maneira melhor..

Mas foi explicito no meu problema ou está confuso ?

Obrigado ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fLaSh_PT

Nesse caso então.. o ideal é utilizar um worker para cada acção..

O que pode fazer te confusão.. depende do que queres fazer..

Por exemplo, se pretendes apresentar informação WinForms.. aí terás de usar os delegates dentro dos threads..

Algo tipo isto:

    Private Delegate Sub UISetStatusBarText(ByVal s As String)
    Friend Sub SetStatusBarText(ByVal sText As String)
        If stMain.InvokeRequired Then
            stMain.Invoke(New UISetStatusBarText(AddressOf SetStatusBarText), sText)
        Else
            lblStatus.Text = sText
        End If
    End Sub

É um código que utilizei para actualizar o StatusBar dentro de um thread..

Que teria de chamar:

SetStatusBarText("qualquer coisa..")


Making the impossible possible and pwing the world on db at a time.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmaster

Agradeço desde já a tua ajuda ;)

Até aqui entedi, mas um exemplo: imagina que tens 2 textbox, e sempre que carregares na tecla + ele na textbox1 incrementa um valor ou o que for, e se carregares na tecla - ele na textbox2 descrementa. Agora se ficares com a tecla '+' selecionado ele fica sempre a aumentar seguidinho sem para até tirares o dedo.. Mas agora o problema é que se ficares com a tecla '+' e  '-' selecionado ao mesmo tempo, ele so incremeta na text correpondente cuja tecla foi pressionada primeiro.

Peço desculpa se não me estou a fazer entender

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nokPT

Agradeço desde já a tua ajuda :thumbsup:

Até aqui entedi, mas um exemplo: imagina que tens 2 textbox, e sempre que carregares na tecla + ele na textbox1 incrementa um valor ou o que for, e se carregares na tecla - ele na textbox2 descrementa. Agora se ficares com a tecla '+' selecionado ele fica sempre a aumentar seguidinho sem para até tirares o dedo.. Mas agora o problema é que se ficares com a tecla '+' e  '-' selecionado ao mesmo tempo, ele so incremeta na text correpondente cuja tecla foi pressionada primeiro.

Peço desculpa se não me estou a fazer entender

Tenho a ideia que, neste tipo de teclas não é possível, experimenta no notepad, carregas no +, ele vai escrevendo + ao velocidade configurada no painel de controlo, quando carregares na tecla -, ele começa a escrever - e deixa de escrever +, depois tirares o dedo do + e voltares a carregar, no notepad volta a aparecer o +, mas para de escrever o -, se estiveres a carregar no +, e carregares no - e tirares o dedo do -, sem tirar o dedo do +, ele escreve +, - e para quando tirares o dedo do -.

É possível que consigas fazer o que pretendes, mas parece-me que terás que descer de nível, que não será possível em vb.net


Ricardo Timóteo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmaster

Penso que tens razão nokPT, para além do mais já pesquisei mil e uma coisas e não encontro nada além de combinação de teclas.

De qualquer maneira se por acaso conseguir deixo aqui a solução.

Muito obrigado nokPT ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.