GARANTIR DESCONTO

Fórum Hook de teclado. Pq tem que ser via DLL? #187261

08/10/2003

0

Olá sou novo neste fórum e gostei do nível mais técnico que outros que eu estava frequentando, pelo menos algumas msgs que eu ví.

A dúvida deve ser de nível médio, mas é o seguinte:
Pq para fazer um HOOK para capturar teclas, temos que colocar as funções de CallBack em uma DLL e não dentro do próprio programa?

[]s Robson


Cyberrob

Cyberrob

Responder

Posts

08/10/2003

Marcelo Saviski

porque o windows só envia para nós, (o programa), o evento Key quando este é gerado pelo próprio programa registrado no windows

como uma Dll é mais independente do que um exe, e existe justamente para isso,
o Windows manda tudo quante é tranqueira de WindowProc para ela


Responder

Gostei + 0

08/10/2003

Nildo

Olá e bem vindo :D
Na verdade é porque você precisa injetar a DLL no sistema operacional inteiro, para que possa interceptar todas as mensagens que o windows envia. No caso seria que pressionou uma tecla. Se você está em um Edit por exemplo e aperta uma tecla, o windows envia a mensagem que apertou a tecla apenas para o Edit, e não para todas as janelas (Se fosse para todas voce poderia interceptar pelo seu EXE). Como sua DLL vai estar injetada em todo o OS, vai etsar no Edit também, e sua DLL vai receber a mensagem antes que o Edit, possibilitando assim que você altere o código da tecla pressionada ou mesmo bloquear essa mensagem. Se fosse possível injetar o EXE como uma DLL você poderia interceptá-la pelo próprio EXE. Mas como não pode então é pela DLL mesmo.

Espero que tenha entendido. QUalquer dúvida responde essa mensagem!


Responder

Gostei + 0

08/10/2003

Beppe

Porque se você quer um hook global(que recebe mensagens de todos os programas), ele poderá executar no contexto de qualquer thread, não apenas do teu programa, então o Windows requer que o código esteja numa dll.

Ataliba.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar