La Web del Programador: Comunidad de Programadores
 
    Pregunta:  20915 - COMO CAPTURAR MENSAJES DE UNA APLICACIóN QUE NO ES LA MIA
Autor:  Gustavo Enriquez
Existe alguna forma de capturar los mensajes de una aplicación en particular, que no sea en la que estoy trabajando.

el objetivo de este programa es capturar los diferentes mensajes que genera una aplicación a nivel del api de windows y luego generar un log de lo que ha hecho o simplemente enviar el contenido del comando como un mensaje de sonido.

He podido hacer esto con la aplicación en la que estoy utilizando los comandos de setwindowslong, reemplazando el windproc de cada ventana dentro de mi misma aplicación, sin embargo no lo he logrado con otras aplicciones.

Gracias por la ayuda.

  Respuesta:  Juan Mellado
Se puede hacer, pero requiere un poco de destreza "programática".

Lo que necesitas es un "Hook", busca esta palabra en el Microsoft Win32 SDK de cualquier compilador o en la web de Microsoft.

Y sobre todo, te recomiendo encarecidamente que consultes el capítulo 7 del libro "Window NT Avanzado" (ISBN: 84-481-1888-X) de Jeffrey Richter, todo un clásico de este gurú de Windows.

Básicamente, lo que tratas de hacer es lo mismo que hace el programa SPY.EXE, una tool de Visual, ¿la conoces?.

Es díficil de explicar en dos líneas, pero no me resisto a intentarlo: Con un hook consigues que el programa que tú quieras ejecute una función tuya ubicada dentro de una DLL tuya cuando a dicho programa le ocurre un determinado evento, como por ejemplo la llegada de un mensaje.

Esto es Hi-Tech. :-)

Espero haberte ayudado.
Saludos, Juan