Je souhaite intercepter les messages qui sont envoyés à une fenêtre dans un processus différent. Quelle est la meilleure façon de procéder? Je ne peux pas voir les messages lorsque j'utilise le hook WH_GETMESSAGE, et je ne suis pas sûr de pouvoir sous-classer les processus? Toute aide serait très appréciée.Comment intercepter des messages envoyés à une fenêtre?
Répondre
Vous devez injecter votre propre code dans le processus qui possède les fenêtres dont vous souhaitez intercepter les messages. Heureusement, SetWindowsHookEx()
rend cela assez facile, bien que vous ayez peut-être un peu de mal au début si vous ne l'avez utilisé que pour le hooking en cours.
Je peux recommander deux excellents articles sur le sujet:
- de Joseph Newcomber Hooks and DLLs
- Robert Kuster Three Ways to Inject Your Code into Another Process
Si le message est envoyé plutôt que posté WH_GETMESSAGE
ne le verra pas. Vous avez besoin de WH_CALLWNDPROC
. Si vous travaillez à travers des processus, vous aurez besoin d'un crochet à l'échelle du système dans une DLL. Vous ne mentionnez pas comment vous avez appelé SetWindowsHookEx, donc je ne sais pas si votre hook a échoué parce que ce n'était pas global, ou parce que le message que vous cherchiez était envoyé.
Si vous n'avez jamais travaillé avec des crochets sur l'ensemble du système, j'ai un exemple de crochet pour l'ensemble du système sur mon site Web here. C'est un crochet de clavier, mais le principe est le même. Arrêtez-moi si je parle involontairement ici - votre question était si courte que je ne peux pas déduire votre niveau d'expertise. Mais déconner avec des crochets implique une certaine expérience ...
Désolé, j'aurais dû fournir plus de détails. J'ai obtenu WH_CALLWNDPROC pour lire les messages, mais comment puis-je supprimer le message de la file d'attente en utilisant cela? Je veux empêcher certains messages d'atteindre la fenêtre cible. –
Ensuite, ne passez pas le message à CallNextHookEx –
Peu importe que j'appelle CallNextHookEx ou non, le message atteint toujours la fenêtre cible. :( –
- 1. className et les messages isKindOfClass envoyés à un objet
- 2. Comment tracer tous les messages envoyés à une classe ou instance particulière en Objective-C?
- 3. Est-ce que les messages envoyés à HWND_BROADCAST vont vers d'autres bureaux?
- 4. Est-il possible d'envoyer des messages WM_QUERYENDSESSION à une fenêtre dans un processus différent?
- 5. Intercepter les emails SMTP de QMail
- 6. Les messages asynchrones de PeopleSoft Integration Broker sont-ils envoyés en série à la réception?
- 7. Durée de vie des messages dans une file d'attente de messages
- 8. Intercepter des appels à des méthodes en PHP
- 9. Comptage des octets envoyés/reçus via HTTP
- 10. Comment intercepter des exceptions non interceptées sur Tomcat?
- 11. Intercepter des appels aux propriétés
- 12. Messages d'erreur apparaissent dans la fenêtre pop-up, comment réparer?
- 13. "Intercepter" l'ouverture d'une info-bulle à l'échelle
- 14. Comment envoyer une fenêtre WPF à l'arrière?
- 15. Comment intercepter des événements sur des objets d'exécution
- 16. Traitement des messages pour la fenêtre à partir d'un autre processus
- 17. Comment intercepter et annuler la lecture automatique à partir d'une application?
- 18. Mon client C++ ActiveMQ peut envoyer des messages sans recevoir de messages.
- 19. Comment intercepter une exception NotImplementedException dans une application WPF?
- 20. Gestion des messages d'erreur à l'aide d'asp.net
- 21. PHP Script Retarder les SMS envoyés?
- 22. Comment obtenir des messages à date future dans Django?
- 23. intercepter des exceptions d'un autre thread
- 24. Comment intercepter des événements d'un package SSIS chargé en C#?
- 25. Comment intercepter une erreur dans la méthode loadQ de jQuery
- 26. Comment animer une fenêtre?
- 27. Intercepter des appels spécifiques en Javascript
- 28. Comment intercepter XMLHttpRequests à partir d'un script Greasemonkey?
- 29. Intercepter le trafic vers memcached pour des statistiques/analyses
- 30. Intercepter l'e-mail pour ajouter du texte
Vous aurez besoin de mettre un système de crochet large message. [Voici un tutoriel] (http://www.codeguru.com/cpp/w-p/system/misc/article.php/c5685). –