Récupérer les messages d'une autre application

Récupérer les messages d'une autre application - C++ - Programmation

Marsh Posté le 17-06-2003 à 12:53:38    

Hello,
 
Je cherche à capturer les clics dans une autre application que la mienne. Avec spy++ j'ai identifié les messages qui m'interressent. Mais après, comment faire ?
Utiliser FindWindow() pour trouver la fenêtre et après ?
 
Merci

Reply

Marsh Posté le 17-06-2003 à 12:53:38   

Reply

Marsh Posté le 17-06-2003 à 13:56:59    

Faire un hook.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-06-2003 à 13:59:41    

HelloWorld a écrit :

Faire un hook.


+1
Un hook éloigné si possible, ce qui signifie que tu devras le placer dans une dll


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2003 à 14:05:12    

Etant donné qu'il ne hook pas son appli, je crois même qu'il est obligatoire de placer son code dans une dll.
Y'a peut être d'autres possibilités ... notamment, je me suis toujours demandé ce qu'on pouvait faire avec CreateRemoteThread.
Peut être que tu peut subclasser la fenêtre aussi. Je sais que tu peux pas subclasser en tappant directement dans la classe d'un autre process, mais je crois qu'un SetWindowLong sur une fenêtre ne t'appartenant pas, ca marche. Si ca marche, ce sera + simple.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-06-2003 à 18:16:59    

Hum un hook....En principe je sais ce que c'est, mais pour le mettre en oeuvre...A pas plus simple ? C'est vraiment tout con ce que je veux faire...

Reply

Marsh Posté le 17-06-2003 à 18:26:27    

Et ben, je viens de jeter un bref coup d'oeil à la msdn, ca a l'air cotton quand même cette histoire de hook...A pas plus simple ?
 
Pasqu'en gros, j'ai l'impression qu'il faudrait que j'apprenne non seulement à utiliser les hook mais aussi les DLL comme je veux recup les messages d'une autre appli...Ca fait bcp de choses à apprendre pour une petite appli de rien du tout...


Message édité par gooopil le 17-06-2003 à 18:33:49
Reply

Marsh Posté le 18-06-2003 à 09:52:37    

Autre appli : autre process, autre espace mémoire, ... c'est pas de la tarte d'aller modifier ça ...
Essaie le SetWindowLong ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 27-06-2003 à 01:35:12    

HelloWorld a écrit :

Autre appli : autre process, autre espace mémoire, ... c'est pas de la tarte d'aller modifier ça ...
Essaie le SetWindowLong ...


 
En fait, je veuix pas modifier l'autre appli mais juste récupérer des clics...(Je précise, l'appli source des clics est un vrai programme - cad pas fait par moi- mais vendu dans le comerce ;) , donc je peux pa modifier celle la)

Reply

Marsh Posté le 27-06-2003 à 09:05:36    

T'as pas d'autres solution que le Hook


---------------
Le Tyran
Reply

Marsh Posté le 27-06-2003 à 09:11:22    

Je crois que j'ai trouvé une solution :
 
http://www.cppfrance.com/article.aspx?Val=2091
 
Dis moi si c'est ce que tu cherches ;)

Reply

Marsh Posté le 27-06-2003 à 09:11:22   

Reply

Marsh Posté le 27-06-2003 à 20:36:01    

Ouais vu qu'il va falloir que je me coltine un hook, ca me fait un très bon exemple, merci. Me reste plus qu'à traudire ca pour une appli mfc et c bon :)
 
L'autre soluition à laquelle j'ai pensé c'est de tenter de retrouver l'emplacement mémoire qui correspond au bouton dont je veux capturer les clics...En fait ca serait même l'idéal

Reply

Marsh Posté le 29-06-2003 à 17:26:36    

Ca ne correspond à rien ... chaque process possède son propre espace virtuel, et le mécanisme des handle est justement là pour empêcher de trifouiller les adresses. Et ce n'est pas le bouton qu'il faut bidouiller, mais sa classe, car c'est elle qui contient le callback appelé. Tu peux essayer un SetWindowLong sur le bouton.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed