1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Capturar tecla digitada em qualquer programa

Discussão em 'Outros/Diversos' iniciado por af.dums, Fevereiro 21, 2011.

  1. af.dums

    af.dums Membro Ativo

    Bom dia...

    Senhores, tenho a seguinte situação:

    Preciso deixar um programa progress rodando em segundo plano, mas capturando as teclas digitadas em qualquer programa em primeiro plano, por exemplo em um bloco de notas. Preciso disto, pois tenho que fazer com que em determinado momento, quando uma tecla F10 por exemplo, for pressionada eu chame automaticamente uma função que estou desenvolvendo em progress.

    Em resumo, preciso capturar todas as teclas pressionadas no teclado até que seja pressionada a tecla que eu espero, isto é possivel?


    Obrigado.

    Att,
  2. kirchner

    kirchner Membro Participativo Moderador

    Anderson,

    Isso que você quer chama keyboard hooking. Existem algumas APIs para isso, mas eu não não saberia dizer se é possível fazer em Progress Seco da Silva.

    Eu fiz uma vez um esquema desse para quando o usuário pressionar CTRL + Q a aplicação aparecia/sumia. Mas fiz em .NET e carreguei este componente dentro do meu formulário Progress. Ficou bem legal e funcionava, mas não é exatamente trivial.
  3. af.dums

    af.dums Membro Ativo

    Olá...

    Precisava em progress puro mesmo...

    Obrigado pela ajuda... :)

    Abraços...
  4. kirchner

    kirchner Membro Participativo Moderador

    É, em progress secão eu não faço idéia.

    Mas se ajudar, as APIs que eu usei foram, todas da user32.dll:
    SetWindowsHookEx
    UnhookWindowsHookEx
    CallNextHookEx
  5. mcarril

    mcarril Membro Participativo

    Peguei este exemplo do help do progress: Tópico Keyfunction function:


    DISPLAY "Precione a Tecla " + kblabel ("go") + "tecla para sair do programa" format "(50)".

    repeat:
    readkey.
    hide message.
    if lastkey keycode(kblabel = ("go")) then return.
    message "voce pressionou " keylabel lastkey "tecla".
    end.

    Captura a telcla e mostra na tela.
  6. af.dums

    af.dums Membro Ativo

    Olá Marly...

    O exemplo na verdade só funciona quando a tela ativa é a do progress, eu preciso em qualquer tela, que o progress mesmo em segundo plano consiga ler o que está sendo digitado.

    Obrigado pela ajuda.

Compartilhe esta Página