Quiero interceptar mensajes que se envían a una ventana en un proceso diferente. ¿Cuál es la mejor manera de hacer esto? No puedo ver los mensajes cuando uso el enlace WH_GETMESSAGE, y no estoy seguro de si puedo subclase en los procesos. Cualquier ayuda sería muy apreciada.¿Cómo puedo interceptar los mensajes que se envían a una ventana?
Respuesta
Debe insertar su propio código en el proceso que posee las ventanas desde donde desea interceptar los mensajes. Afortunadamente, SetWindowsHookEx()
hace que esto sea bastante fácil, aunque es posible que tenga problemas al principio si solo lo ha usado para el proceso de conexión hasta ahora.
puedo recomendar dos excelentes artículos sobre el tema:
- de José Newcomber Hooks and DLLs
- Robert Kuster Three Ways to Inject Your Code into Another Process
Si el mensaje se envía en lugar de publicado WH_GETMESSAGE
no lo verá. Necesita WH_CALLWNDPROC
. Si está trabajando en procesos, necesitará un enlace de todo el sistema en una DLL. No menciona cómo invocó SetWindowsHookEx, por lo que no sé si el enganche falló porque no era global, o porque el mensaje que estaba buscando era enviado.
Si no ha trabajado anteriormente con ganchos para todo el sistema, tengo un ejemplo de un gancho para todo el sistema en mi sitio web here. Es un gancho de teclado, pero el principio es el mismo.
Deténgase si hablo sin querer aquí: su pregunta fue tan breve que no puedo inferir su nivel de experiencia. Pero perder el tiempo con los ganchos implica implicar algo de experiencia ...
Lo siento, debería haber proporcionado más detalles. Obtuve WH_CALLWNDPROC para leer los mensajes, pero ¿cómo puedo eliminar el mensaje de la cola con eso? Quiero evitar que algunos mensajes lleguen a la ventana de destino. –
Luego no pase el mensaje a CallNextHookEx –
No importa si llamo a CallNextHookEx o no, el mensaje siempre llega a la ventana de destino. :( –
- 1. Cómo interceptar o elevar los mensajes de registro cuando llamo a una tarea Ant desde Gradle
- 2. Objetos que se envían a sí mismos, ¿una buena idea?
- 3. System.Net.Mail y MailMessage no envían mensajes inmediatamente
- 4. Interceptar mensajes en un cliente de WCF
- 5. C#: ¿Cómo se envían los mensajes OK o Cancel return from dialogs when not using buttons?
- 6. Interceptar cake2 postLink() mensajes con jQuery
- 7. ¿Sería posible interceptar todas las redirecciones y abrir los contenidos en una nueva ventana/ventana emergente?
- 8. Interceptar mensajes flash entrantes en el móvil Android
- 9. ¿Cómo puedo evitar que una ventana de diálogo se oculte?
- 10. ¿Qué datos se envían a Google Analytics?
- 11. ¿Cómo se envían los comandos AT GSM utilizando python?
- 12. IOS Jailbreak Cómo interceptar mensajes de texto/SMS
- 13. Interceptar el botón Menú de Android en una ventana emergente
- 14. ¿Cómo puedo hacer que los comandos de movimiento de ventana ignoren una ventana determinada?
- 15. ¿Cómo envían los zombies el correo?
- 16. ¿Cómo se envían los eventos de Android touch?
- 17. ¿Cómo se envían correos masivos desde ASP.NET?
- 18. ¿Cómo puedo manejar los mensajes de ventana de un hilo separado?
- 19. Interceptar mensajes de la consola del navegador web
- 20. ¿Puedo interceptar una función llamada directamente?
- 21. ¿Cómo puedo hacer que mi aplicación de consola reciba mensajes de ventana?
- 22. ¿Cómo puedo "interceptar" Ctrl + C en una aplicación CLI?
- 23. ¿Los datos se envían a Google cuando se utiliza la API de visualización de Google?
- 24. ¿Cómo puedo imprimir una ventana abatible para que se ajuste bien en una sola página?
- 25. cómo interceptar los cambios innerHTML en javascript?
- 26. ¿Se puede usar la API de Android para interceptar y leer mensajes de operador (mensajes de USSD)?
- 27. Cómo filtrar mensajes en Ejabberd
- 28. ¿Cómo puedo interceptar excepciones no detectadas en Tomcat?
- 29. ¿Cómo se envían los datos de entrada sin procesar en una prueba funcional de Rails?
- 30. ¿Cómo puedo hacer que una ventana LWJGL sea redimensionable?
Usted tendrá que establecer un sistema de gran enlace de mensaje. [Aquí hay un tutorial] (http://www.codeguru.com/cpp/w-p/system/misc/article.php/c5685). –