ElChristus
Messages postés5Date d'inscriptionmardi 4 avril 2006StatutMembreDernière intervention20 janvier 2008
-
12 août 2006 à 11:08
Utilisateur anonyme -
14 août 2006 à 22:41
Bonjour !
Tout d'abord c'est mon premier message sur un forum, et je suis de niveau debutant en C.
Je suis actuellement en train de creer un bot ! et je recherche une fonction qui premetterait de "reconnaitre ce qu'il y a à l'ecran...."
Je m'explique... j'ai sur l'ecran un rat qui se deplace et j'aimerai que mon programme puisse interagir en fonction de son deplacement ! Ce rat est en fait composé de 8 images. Ce qui donne une image par direction vers laquel il se dirige.
Voila le probleme c'est que je sais pas du tout comment faire ca.... Je pense que mon programme dois prendre un screenshot (bmp ?) puis le convertir en
binnaire pour pouvoir ensuite comparrer avec le code binnaire d'une de mes 8 images que j'aurai converti auparavant... Es ce que c'est comme cela que je dois m'y prendre ? Ca me semble bien compliqué et je pense qu'il faut un ordi qui puisse suivre non ? en plus en faisant comme ca je vois pas comment trouver la position... Quelqu'un pourrait il me dire si c'est la bonne demarche ou si il y a plus simple ?
cs_saifer
Messages postés115Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention19 décembre 20081 12 août 2006 à 12:10
Salut !
Je ne vois pas exactement ce que tu veux faire, en tout cas je peux te dire une chose : laisse tomber ta solution !
Ton rat qui se déplace, c'est un programme indépendant du tien ? ce n'est pas toi qui l'a fait ? déjà faudrait savoir ca. Ensuite, qu'entend-tu par intéragir, sois plus précis, si je savais exactement ce que tu voulais faire, pe-e pourrais-je t'aider !
Sinon pour savoir dans quelle direction va ton rat, il y a plus simple, beaucoup plus simple ! Ton rat c'est en faite une fenetre dans laquelle on affiche une image, et dont on redessine les contours. Il te suffit de trouver le titre de la fênetre (tu peux utiliser Spy++, si tu as VisualStudio), pour ensuite trouver son handle (FindWindow) et trouver sa position (GetWindowRect), ensuite tu compare avec la position précédente, tu as le sens de déplacement !
voilou.
(PS:je pars en vac cette nuit (dimanche) alors je ne pourrais peut-être pas te répondre ! mais quelqu'un s'en chargera maintenant qu'il y a une piste !)
cs_saifer
Messages postés115Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention19 décembre 20081 12 août 2006 à 12:38
Je viens de penser à un truc, si le nom de ta fenetre change ou si tu ne possède pas Spy++, il y a une solution, plus "propre" qui marcherais à chaque fois, il suffi de connaitre le nom de l'executable, ensuite :
-tu recherche dans la liste de processus lancé l'ID du processus lancé par ton executable, (utilise CreateToolhelp32Snapshot, Process32First), tu n'as qu'a comparer le nom du processus courant avec le tien
-ensuite, une fois que tu as obtenu l'ID du processus (le rat qui se balade!) tu utilises EnumWindows pour énumérer toutes les fenêtres et comparer l'ID de la fenetre courante avec l'ID que tu as trouver avant. (utilise GetWindowThreadProcessId)
-une fois que tu as trouvé le même ID le handle de la fenêtre courante est celui que tu cherches !
-ensuite tu fasi comme précédemment, avec GetWindowRect pour choper la position de la fenêtre.
Je t'ai mis les noms des fonctions à utiliser, une simple recherche sur le forum ou dans les sources, et tu trouveras plein d'exemples. A toi de combiner le tout.
ElChristus
Messages postés5Date d'inscriptionmardi 4 avril 2006StatutMembreDernière intervention20 janvier 2008 12 août 2006 à 14:51
Ok super !
En fait il sagit d'un jeu en flash que m'a envoyé mon frere... Un petit jeu idiot ou il faut cliquer sur des rats pour les tuer...Il m'a mis au defi de faire mieu que lui et comme j'ai pas la patience comme lui de jouer des heures... je me suis dit on va faire un ptit bot histoire de lui montrer qui es le plus fort Je sais que c'est idiot mais je suis en vacances la alors fo bien trouver une occupation. Bon en fait j'ai pas tt compris mais c'est pas grave je vais essayer de me debrouiller avec ca et je te remercie !!!
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 12 août 2006 à 15:42
Ben si tu veux impressionner ton frère, fait un programme qui modifira
les scores. Sinon, plus sérieusement, de ce point de vue, c'est presque
mission impossible. Bon alors je vais essayer de comprendre. Corrige
moi si je me trompe. Tu as un jeu flash. Ce jeu est une fenêtre dans
laquel se promène des rats. Il faut cliquer dessus pour les tuers. Bon
déjà là ça s'annoce problematique. Il faudrait savoir comment sont les
rats. Si l'arrière plan est completement différent de la couleur des
rats, tu pourrait faire en effet un printscreen de la fenêtre de
l'application (UNIQUEMENT de l'application) que tu mettera dans un
buffer, repérer tout ce qu'y peut être blanc et de simuler un clic de
souris à l'endroit approprié. Voilà. Si tu veux comprendre comment
fonctionne l'affichage sous Windows, je te suggère de regarder les
sources sur ce site:
Tu y trouvera toute l'info nécessaire sur les fonctions de l'API win32
En passent, si tu n'a pas la patience de jouer des heures comme ton
frère, tu n'aura probablement pas la patience de faire ce programme ;)
car ça va probablement être long.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
Vous n’avez pas trouvé la réponse que vous recherchez ?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 13 août 2006 à 03:39
L'art de se simplifier la vie. Pas bête. Simuler séquentiellement un clique de souris sur toute la surface de l'écran. Efficasse. Tien, cette source pourrait répondre à une grande partie de tes questions:
http://www.cppfrance.com/codes/SIMULER-SOURIS_19154.aspx
ElChristus
Messages postés5Date d'inscriptionmardi 4 avril 2006StatutMembreDernière intervention20 janvier 2008 13 août 2006 à 10:48
Oui c'est pas idiot ! Mais j'ai deja essayé ca... avec la meme source d'ailleur le probleme c'est que si je clique à coté de ce rat ca me donne des points en moins...
niketou
Messages postés295Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention 6 décembre 2010 13 août 2006 à 19:35
Ton rat est de quelle couleur? gris?
dans ce cas met un font d'ecran vert, tu enregistres l'image du bureau .
une boucle qui lit les couleurs du fichier image, quand il tombe sur un pixel gris (genre r=255 g=255 b=0) il clique sur la position de l'ecran.
Il y a aussi un logiciel qui permet de retrouvé l'adresse memoire ou est stoqué une valeur et de modifier cette valeur
ce logiciel s'appelle: RAM Cheat tu pouras modifier ton score avec :)