Ver Mensaje Individual
  #6  
Antiguo 07-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Hola Pedro,

el problema es el siguiente. Cada vez que te cambias de apliacion, windows inyecta tu dll en el nuevo proceso, despues de la inyeccion las variables de la dll no contienen lo mismo que en la dll que esta cargada en tu proceso. Es decir, cada proceso va a tener su propia instancia de la dll.

Con el procedure pasar_handle_a_dll solo le estas dando el valor correcto a la variable ApliHandle que pertenece a la instancia de la dll que tiene cargada tu proceso. Para los demas procesos esa variable sigue sin inicializar.

Una vez localizado el problema tenemos dos prosibles soluciones. Las mas sencilla, si solo quieres capturar las pulsaciones de teclado, es utilizar un hook del tipo WH_KEYBOARD_LL en vez WH_KEYBOARD, estos no necesitan estar implementados en una dll y es el propio windows el que se encarga de hacer los cambios de contexto. La otra solucion es mapear las variables en la memoria global, de forma que puedan ser leidas desde cualquier proceso.

Ejemplo de la primera solución:
http://romansg.net/index.php?pg=hooks

La segunda solución no te la aconsejo a menos que necesites inyectarte en otro proceso por algún motivo en especial
Responder Con Cita