begin process at 2012 05 30 14:51:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Reconnaissance !


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

Reconnaissance !

samedi 12 août 2006 à 11:08:17 | Reconnaissance !

ElChristus

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 ?
samedi 12 août 2006 à 12:10:40 | Re : Reconnaissance !

saifer

Membre Club
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 !)


-{ Saifer }-


samedi 12 août 2006 à 12:38:38 | Re : Reconnaissance !

saifer

Membre Club
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.

-{ Saifer }-


samedi 12 août 2006 à 14:51:47 | Re : Reconnaissance !

ElChristus

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 !!!
samedi 12 août 2006 à 15:42:07 | Re : Reconnaissance !

SAKingdom

Membre Club
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:

Exelente source. Fait par un professionnel. Parfait.
http://www.cppfrance.com/codes/IMPRIMEUR-IMAGES-BMP-API_33749.aspx

Celle-ci est pour comprendre comment récupérer et traiter le buffer image
http://www.cppfrance.com/codes/GET-SETDIBITS_38788.aspx

Si tu connais déjà MSDN, parfait. Tu en aura besoin. Sinon:
[ Lien ]
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

samedi 12 août 2006 à 22:02:12 | Re : Reconnaissance !

niketou

Ou alors un petit log qui cliquerai n'importe ou (ou a des endroits precis de l'ecran) avec un timer rapide ,je crois que c'est mieux et  + simple.
dimanche 13 août 2006 à 03:39:35 | Re : Reconnaissance !

SAKingdom

Membre Club
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

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation

dimanche 13 août 2006 à 10:48:45 | Re : Reconnaissance !

ElChristus

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...
dimanche 13 août 2006 à 19:35:57 | Re : Reconnaissance !

niketou

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.
dimanche 13 août 2006 à 21:28:21 | Re : Reconnaissance !

ElChristus

Ok ca revien à l'idée precedante...Je pense que c'est la bonne solution, j'essai de me lancer dans cette direction... Merci !!!

1 2

Cette discussion est classée dans : fonction, programme, ecran, reconnaissance, rat


Répondre à ce message

Sujets en rapport avec ce message

redessiner l'ecran en Vc++ [ par glipper ] Bonjour,Je chercherais une fonction pour redessiner (reactualiser quoi !) ma fenetre en Vc++. On m'a parlé de la fonction "Update" mais mon compilateu net use * /delete EN C++ [ par LeBobo ] Salut. J'ai un petit programme qui utilise la fonction : system(''net use * /delete'') ; Le problème est que mon programme à une interface graphique w Vérifier le bon déroulement de mon prog ds 1 TMemo [ par ivdz ] Bonjour, J'ai développé sous C++ builder 6 un programme avec une interface qui possède des TEdit, 2 boutons (Valider et Quitter) et un TMemo. Le bouto plein ecran et fermer un programme [ par naney ] Salut a tout le monde je cherche la fonction qui rend la fenétre dos de mon programme en plein écran et la fonctin pour fermer un programme mais qui f economiseur d'ecran [ par philippexxx ] philippeje souhaite savoir la difference entre un programme graphique simple en visual c++ et un economiseur d'ecranoucomment transformer un programme ouvrir un programme [ par Adeon ] Salut!y a t-il une fonction qui est cappable d'ouvrir un programme que l'on defini dans la fonction.Bien sure, quand je dis ouvrir, ce n'est pas dans strcat() ???? [ par supergrey ] Salut tout le monde, jai un petit probleme avec la fonction strcat() , je commence a peine un programme que deja je bloque la dessus jaimerai de l'aid Démarer un programme [ par supergrey ] Bonjour, je voudrais savoir comment lancer un .exe a partir d'un programme j'ai essayé ca:system("start c:/Mes jeux/jeu1.exe");Mais cette fonction n'a Port série [ par cheMoor ] Bonjour,Merci Ymca2003 de ton aide, ton programme semblé super, mais je n'arrive pas à le tester (car il est programmé en Visual C++ « les boutons, l thread et plein ecran [ par dletozeun ] bonjour,je voudrais savoir s'il est possible qu'un thread créé par un prog (en c++) qui se lance en plein ecran, puisse ne jamais s'excuter...c appare


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 : 1,685 sec (4)

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