begin process at 2012 05 30 10:36:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

utilisation de Spy++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

utilisation de Spy++

vendredi 24 juillet 2009 à 14:36:34 | utilisation de Spy++

sunvi

Bonjour,
je fais un programme qui devrait automatiser une tâche dans un logiciel. Manuellement, on peut effectuer cette tâche de 2manières:
1- en appuyant sur un bouton d'une barre d'outils
2- en faisant un choix dans un menu

j'essaye d'utiliser Spy++, enfin je le découvre...
j'essaye de sélectionner la plus petite fenêtre, et de bouger tout doux sur la fenêtre, mais je me retrouve toujours avec au moins une centaine de messages captés, et je ne sais pas trop lequel est celui que je cherche.
j'ai même enregistré les messages captés en utilisant les 2manières d'activation, en cherchant une similitude, mais non, je trouve pas!

j'ai besoin de vos conseils !

Merci d'avance!

vendredi 24 juillet 2009 à 15:31:34 | Re : utilisation de Spy++

juju12

Tu peux filtrer les messages pour ne garder que ceux qui t'intéressent (par exemple virer tous les WM_MOUSEMOVE et compagnie...)
Que veux-tu faire exactement?

vendredi 24 juillet 2009 à 16:03:34 | Re : utilisation de Spy++

sunvi

j'ai essayé de filtrer, j'enlève les messages associé à la souris par exemple, mais là je n'obtiens plus rien... pour le reste je ne sais pas trop ce que c'est, j'essaye à l'aveuglette...
pour le moment je veux capter le code de mon bouton, et le message qui lui est envoyé pour déclencher le processus, pour simuler le click sur ce bouton dans SendMessage.

Pourriez vous me dire ce que signifie "WM_NOTIFY idCtrl:59392 pnmh:0012F9D4" par exemple? et c'est quoi les "S" et "R" qui apparaissent entre le handle et les "WM_..."?

Merci!!!

dimanche 26 juillet 2009 à 20:53:29 | Re : utilisation de Spy++

alfred2009

Le message WM_NOTIFY correspond à une notification d'un contrôle vers la fenêtre parente. Dans ton exemple, tu as l'ID du contrôle, pnmh devrait correspondre à p_ointer n_otification m_essage h_eader, que l'on utilise dans le traitement du message. S correspond à Send de la fonction SendMessage, R correspond à Return de la fonction SendMessage, dans ce cas il s'agit d'un appel synchrone.

Si j'ai bien compris ton besoin, tu voudrais que le choix d'une option de menu ait la même action que l'appui sur le bouton. La simulation de l'appui sur bouton existe bien, mais tu ne le verras pas avec spy++ puisque la simulation n'est pas en place ! Regarde l'utilisation du message BM_CLICK, à envoyer au bouton par SendMessage.

lundi 27 juillet 2009 à 09:52:51 | Re : utilisation de Spy++

sunvi

Merci pour les explications alfred2009!!
sinon je crois que t'as pas vraiment compris mon besoin: le choix d'une option du menu, et le bouton raccourci existent déjà tous les 2, dans un logiciel dont je dois automatiser l'exécution.
Donc tu crois que si j'envoie un BM_CLICK au pnmh que j'ai trouvé ça devrait marché?
ce qui me tracasse c'est l'ID du contrôle d'une part, et la notification à envoyer d'autre part....

lundi 27 juillet 2009 à 11:07:48 | Re : utilisation de Spy++

alfred2009

Ce que je te suggère, c'est d'envoyer BM_CLICK au contrôle. Dans le gestionnaire de ton menu, tu fais un
::SendMessage( Handle_du_Controle, BM_CLICK, 0, 0 ); // appel Win32

Attention, le pnmh que tu as vu dans spy++ n'est pas à utiliser - réutiliser en dehors de cas précis et pointus, et par celui qui maîtrise l'emission du WM_NOTIFY.

lundi 27 juillet 2009 à 11:38:21 | Re : utilisation de Spy++

sunvi

Mais c'est effectivement ça qui me bloque: le handle du controle, je ne le connais pas
Les logiciels à gérer sont commercialisés, je n'ai pas leurs codes sources, donc il faut que je me débrouille pour trouver le handle, on m'a conseillé spy++...
tu peux me dire où le trouver exactement?
merci!

lundi 27 juillet 2009 à 14:07:23 | Re : utilisation de Spy++

alfred2009

Spy++ va te donner le handle du bouton, mais celui-ci peut/va changer d'une exécution à l'autre.
Tu peux faire ce que fait Spy++ par programme, pourvu que tu aies un moyen de reconnaître la fenêtre principale et le bouton, par leur texte par exemple. Dans ce cas tu énumères les fenêtres actives (cf EnumWindows pour la fenêtre principale, puis EnumChildWindows pour le bouton), cela te donnera les handles de fenêtre.

lundi 27 juillet 2009 à 15:03:00 | Re : utilisation de Spy++

sunvi

En fait le bouton appartient à une barre d'outils, EnumWindows me donne l'accès à la fenêtre de mon logiciel toto,quoi que le titre est variable mais il est toujours construit suivant la même règle, donc déterminable. EnumChildWindows me donnera l'accès à la barre d'outils fille de toto "Toolbar" contenant mon bouton, mais même spy++ ne détecte pas une fenêtre plus petite que cette barre d'outils... mon bouton a cependant un nom, ça peut aider?

mardi 28 juillet 2009 à 08:49:47 | Re : utilisation de Spy++

alfred2009

Si Spy++ ne détecte pas de fenêtre, c'est probablement que le bouton n'est pas un contrôle Windows. Dans ce cas, oublie le BM_CLICK et retour à la case départ.

Pour espionner la toolbar, tu peux aussi utiliser l'outil "control spy", disponible sur la MSDN.


1 2

Cette discussion est classée dans : utilisation, essaye, tâche, spy, 2manières


Répondre à ce message

Sujets en rapport avec ce message

Utilisation de SPY++ [ par goutbouyo ] Salut,J'ai récupéré le handle d'une fenêtre avec spy++ mais après je n'arrive pas à l'utiliser : j'ai toujours des erreurs car mon handle est sous for utilisation SDL [ par theidiot ] J'aimerais s'avoir s'il y un site qui donne de l'information compléte sur l'utilisation SDL (plusieurs exemples doit être acompagner)J'ai chercher mai utilisation de "SetScrollPos" de l'api windows [ par Tchii28 ] Bonjour,J'ai un problème je travaille sous windev 8 et apparemment ce site ne traite pas le langage de ce dernier. J'espère malgré tout qu'il y a des utilisation d'une classe [ par Spiffou ] bonjour à tous,une ptite question de noob... je souhaite utiliser une classe que j'ai importée, mais je ne sais pas comment faire.en gros j'ai inséré utilisation de zLib [ par goebish ] bonjour, j'utilise la zLib dans un de mes programme et je voudrais extraire uniquement le 1er kilo octet d'un fichier a l'intérieur d'une archive just utilisation d'interface en c++ [ par Spiffou ] salut à tous,je taf sur vc6 et je souhaiterais utiliser dans mon prog des interfaces, equivalent en java de implements et public interface...public in problème dessiner image dans fenêtre [ par raoulman ] Bonjour Comme je tourne en rond, je viens chercher de l'aide. J'essaye de faire un morpion en GDI, c'est pour apprendre. J'ai une fenêtre mère avec 9 spy++ [ par boumarsel ] le code source de l'utilitaire spy++ est publié? si oui, ou puis-je le trouver? merci Utilisation des CArchive [ par Bb_TiTi ] bonjour,je commence a utiliser les CArchive et j'ai quelques questions:- comment passer d'une CArchive a un objet? quand j'ai réécris la fonction seri fichiers partagés en cours d'utilisation [ par melkiorlenecrarque ] Bonjour,Existe-il une fonction qui recupere le contenu de la console msdos,ou alors existe-il une fonction qui est similaire à la commande dos "net fi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales