Gravar teclas pressionadas

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Gravar teclas pressionadas

Breno Ramalho Lemes
Olá amigos!

Gostaria de saber se alguém conhece uma forma de fazer o seguinte com
Lua para Windows XP:
* Ficar rodando em background lendo todas as teclas pressionadas (com
isso eu vou ir criando um banco de dados); e
* Em determinados momentos, enviar as teclas para o programa que estiver
ativo no momento.

A dúvida é como ler as teclas e enviar para qualquer programa ativo. O
banco de dados e o restante da programação já sei como fazer. Mas para
esclarecer melhor as intenções.

Todos os dias eu digito <F8> <um nome de pessoa> <um número de 4
dígitos> <F5>. A quantidade de nomes repetidos é bem grande. O que eu
quero é quando eu pressionar F8 o programa vai armazenando os dados
digitados até o F5. Quando ele reconhecer os padrões vai me apresentar
opções para digitar o restante do texto automaticamente.

Conheço alguns programas que fazem isso, mas precisamos cadastrar uma
lista de abreviações e substituições. O que eu gostaria ao programar um
por mim mesmo é ser específico, reconhecendo os nomes que eu digito com
mais frequência (não dependendo da minha memória para reconhecer isso).
Além daquele número de 4 dígitos, que é sequencial e eu poderia
programar para gerar automaticamente, evitando erros que às vezes eu cometo.

Alguma ideia?

--
http://www.br-lemes.net/

--
--
Lua BR - http://groups.google.com/group/lua-br

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Reply | Threaded
Open this post in threaded view
|

Re: Gravar teclas pressionadas

Eric Chiesse
Podem haver algumas soluções dependendo de como você quer resolver:

Você digita esses nomes em um programa específico ou vai fazer um para isso?

Se o programa onde você digita te fornece alguma saída em arquivo
talvêz seja mais fácil fazer o parsing desse arquivo (nesse caso dá
para usar só lua)
Se você realmente precisa de um keylogger (o software que vc
descreveu) provavelmente vai ter que fazer em C ou C++ (não conheço
solução direta em lua). Se você estiver no windows dá uma olhada em
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx.
Deve haver algo similar no Linux.

Por último dependendo do teu problema você pode fazer toda essa
digitação em um programa especifico seu criado para isso. E nesse
definir handlers para o evento OnKeyPress do SO.

Com mais informações sobre o contexto, se você puder fornecer, fica
mais fácil dar uma opinião.
---
Eric


Em 3 de março de 2013 14:22, Breno Ramalho Lemes
<[hidden email]> escreveu:

> Olá amigos!
>
> Gostaria de saber se alguém conhece uma forma de fazer o seguinte com Lua
> para Windows XP:
> * Ficar rodando em background lendo todas as teclas pressionadas (com isso
> eu vou ir criando um banco de dados); e
> * Em determinados momentos, enviar as teclas para o programa que estiver
> ativo no momento.
>
> A dúvida é como ler as teclas e enviar para qualquer programa ativo. O banco
> de dados e o restante da programação já sei como fazer. Mas para esclarecer
> melhor as intenções.
>
> Todos os dias eu digito <F8> <um nome de pessoa> <um número de 4 dígitos>
> <F5>. A quantidade de nomes repetidos é bem grande. O que eu quero é quando
> eu pressionar F8 o programa vai armazenando os dados digitados até o F5.
> Quando ele reconhecer os padrões vai me apresentar opções para digitar o
> restante do texto automaticamente.
>
> Conheço alguns programas que fazem isso, mas precisamos cadastrar uma lista
> de abreviações e substituições. O que eu gostaria ao programar um por mim
> mesmo é ser específico, reconhecendo os nomes que eu digito com mais
> frequência (não dependendo da minha memória para reconhecer isso). Além
> daquele número de 4 dígitos, que é sequencial e eu poderia programar para
> gerar automaticamente, evitando erros que às vezes eu cometo.
>
> Alguma ideia?
>
> --
> http://www.br-lemes.net/
>
> --
> --
> Lua BR - http://groups.google.com/group/lua-br
>
> --- Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
> dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>

--
--
Lua BR - http://groups.google.com/group/lua-br

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Reply | Threaded
Open this post in threaded view
|

Re: Gravar teclas pressionadas

Francisco Yamauti
acho que o grande lance é esse mesmo, tem que ver como fazer as hooks no sistema, se vai ser via dll ou algo do gênero.

se for, não sei se rola fazer em lua puro. acho que vai ter uqe partir pra algo mais próximo da camada do sistema mesmo


2013/3/3 Eric Chiesse <[hidden email]>
Podem haver algumas soluções dependendo de como você quer resolver:

Você digita esses nomes em um programa específico ou vai fazer um para isso?

Se o programa onde você digita te fornece alguma saída em arquivo
talvêz seja mais fácil fazer o parsing desse arquivo (nesse caso dá
para usar só lua)
Se você realmente precisa de um keylogger (o software que vc
descreveu) provavelmente vai ter que fazer em C ou C++ (não conheço
solução direta em lua). Se você estiver no windows dá uma olhada em
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx.
Deve haver algo similar no Linux.

Por último dependendo do teu problema você pode fazer toda essa
digitação em um programa especifico seu criado para isso. E nesse
definir handlers para o evento OnKeyPress do SO.

Com mais informações sobre o contexto, se você puder fornecer, fica
mais fácil dar uma opinião.
---
Eric


Em 3 de março de 2013 14:22, Breno Ramalho Lemes
<[hidden email]> escreveu:
> Olá amigos!
>
> Gostaria de saber se alguém conhece uma forma de fazer o seguinte com Lua
> para Windows XP:
> * Ficar rodando em background lendo todas as teclas pressionadas (com isso
> eu vou ir criando um banco de dados); e
> * Em determinados momentos, enviar as teclas para o programa que estiver
> ativo no momento.
>
> A dúvida é como ler as teclas e enviar para qualquer programa ativo. O banco
> de dados e o restante da programação já sei como fazer. Mas para esclarecer
> melhor as intenções.
>
> Todos os dias eu digito <F8> <um nome de pessoa> <um número de 4 dígitos>
> <F5>. A quantidade de nomes repetidos é bem grande. O que eu quero é quando
> eu pressionar F8 o programa vai armazenando os dados digitados até o F5.
> Quando ele reconhecer os padrões vai me apresentar opções para digitar o
> restante do texto automaticamente.
>
> Conheço alguns programas que fazem isso, mas precisamos cadastrar uma lista
> de abreviações e substituições. O que eu gostaria ao programar um por mim
> mesmo é ser específico, reconhecendo os nomes que eu digito com mais
> frequência (não dependendo da minha memória para reconhecer isso). Além
> daquele número de 4 dígitos, que é sequencial e eu poderia programar para
> gerar automaticamente, evitando erros que às vezes eu cometo.
>
> Alguma ideia?
>
> --
> http://www.br-lemes.net/
>
> --
> --
> Lua BR - http://groups.google.com/group/lua-br
>
> --- Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
> dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>

--
--
Lua BR - http://groups.google.com/group/lua-br

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
--
Lua BR - http://groups.google.com/group/lua-br
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 
Reply | Threaded
Open this post in threaded view
|

Re: Gravar teclas pressionadas

Breno Ramalho Lemes
In reply to this post by Eric Chiesse
Encontrei a solução para metade do problema: depois de gravadas as
teclas, enviar para um programa específico. Um exemplo:

require("winapi")

P = winapi.spawn_process 'notepad'
P:wait_for_input_idle()
w = winapi.find_window_match 'Sem nome'
w:show()
w:set_foreground()
winapi.send_to_window 'hello dammit'

Essa winapi é bem interessante: https://github.com/stevedonovan/winapi

Ainda resta gravar as teclas, que é justamente o assunto do tópico.

Em 03-03-2013 19:26, Eric Chiesse escreveu:
> Podem haver algumas soluções dependendo de como você quer resolver:
>
> Você digita esses nomes em um programa específico ou vai fazer um para isso?

Sim, uso um programa específico para isso.

> Se o programa onde você digita te fornece alguma saída em arquivo
> talvêz seja mais fácil fazer o parsing desse arquivo (nesse caso dá
> para usar só lua)

Não, é programa com interface GUI.

> Se você realmente precisa de um keylogger (o software que vc
> descreveu) provavelmente vai ter que fazer em C ou C++ (não conheço
> solução direta em lua). Se você estiver no windows dá uma olhada em
> http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx.
> Deve haver algo similar no Linux.

É para Windows mesmo. Vou estudar isso ai.

O objetivo do tópico é que talvez alguém conhecesse alguma coisa pronta
(como a winapi) e me evitaria programar em C.

Mas obrigado Eric, a informação foi útil. Talvez com Alien eu me livre
de codificar em C.

--
http://www.br-lemes.net/

--
--
Lua BR - http://groups.google.com/group/lua-br

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Reply | Threaded
Open this post in threaded view
|

Re: Gravar teclas pressionadas

fecik
Uma linguagem e biblioteca abrange e se restringe a qual?
A. Caracteristicas comuns as maquinas eletronicas;
B. Caracteristicas comuns a sistemas operacionais populares;
C. Caracteristicas minuciosas de um sistema.
.
Porem, fazem bibliotecas para pular as barreiras, fazendo a classe A
ou B suportar B ou C.
.
A microsoft disponibiliza a biblioteca classe C;
Empresas criaram bibliotecas baseadas nela;
A microsoft criou uma biblioteca moderna;
Empresas fizeram suas linguagens suporta-la;
Movimentos fizeram outros ambientes suporta-la.
.
Trocando dados entre dois programas:
Eh viavel por argumentos de linha de comando?
Eh viavel por arquivos?
Eh viavel por sockets?
Eh viavel por mensagens de sistema?
Eh viavel por tecnologias de comunicacao do sistema?
.
Seria melhor, no proprio programa, que a lista flutuante aparecesse,
dando as dicas de complemento.
.
Se os numeros sao identificadores sequenciais, farias um arquivo onde
se leria os nomes atraves dos campos de 128 bytes.
.
Todo usuario deve saber as propostas dos programas;
Todo usuario deve respeitar esta proposta.

--
--
Lua BR - http://groups.google.com/group/lua-br

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.