Page 1 sur 1

[..] Demande fonction PixelSearch+MouseClick

Posté : mer. 20 janv. 2010 16:04
par L7V
Bonjour a tous , je suis programmeur en C en C++ en HTML etc ... Je me lance a l'autoIt . Voila je voudrais faire un programme qui consiste a cliquer sur des pixels a des places indéfini dans l'écran mais au quelles on conner les couleurs ... C'est en fais pour faire une démonstration dans un petit jeu que je crée . Voila je vous serez très reconnaissant si quelqu'un pouvait me faire un script qui cherche un pixel que je connait dans tous mon ecran et qu'il clique dessus si c'est possible et que si il n'y est pas il en cherche un autre connus mais a une place indéfinis etc ... Est-ce possible ?

J'ai malheureusement effectuer une recherche et je n'est pas vraiment trouver une réponse qui corresponde parfaitement a ce que je cherche . :oops:

Merci d'avance , L7V

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : jeu. 21 janv. 2010 19:50
par L7V
Personne ne peut me faire se script ? =( Il consisterai en bref a chercher un pixel et a cliquer dessus .

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : jeu. 21 janv. 2010 20:21
par pop45
Je veut bien mais bon faudrait un peu plus de pression parce que que sur mon ecran il y a ......
Un petit calcul :
1280*1024=1 310 720

Il y a 1310720 pixels different sur ton ecran donc c'est un peut dure si tu voit se que je veut dire

Il faut la couleur un un screen de ton ecran avec la couleur chercher dessus

Et il fau etre PRÉCIS

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : jeu. 21 janv. 2010 20:27
par L7V
Oui je veut bien vous donnez la couleur mais je ne sais pas comment vous la trouver en 0x458966 par exemple moi c'est un #75478 par exemple ...

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 15:11
par Alienator
Salut L7V,

je pense qu'une petite recherche sur la fonction Pixelsearch. Il suffit que tu l'appliques a ta resolution d'ecran et a ton code couleur Hex.

Et puis apres un petit coup de Mousemouv

Le tout agrementé d'une boucle ou 2 ... te permettrais de trouver ton bonheur.

Si tu veux tu peux aller sur cet article qui traite du sujet : Besoin d'aide pour un Projet.
http://www.autoitscript.fr/forum/viewto ... f=3&t=3964


Seul regret, il manque la source complete de cet article, n'est ce pas ?

Qu'en penses-tu ? ?

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 15:33
par Habibsbib
J'ai déja créé une fonction pour cela, je pesne qu'elle résoudra ton problème.

C'est _ColorClick, à voir ici : http://www.autoitscript.fr/forum/viewto ... =21&t=4433

J'espère que ça te serviras.

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 16:24
par Piwidoo
Hellooo,
Si la couleur que tu veut rechercher c'est #75478 ça fait 0x75478... :roll:

Code : Tout sélectionner

$Coord = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0x75478, 1)
    If Not @error Then
        MouseMove($Coord[0], $Coord[1], 1)
        MouseClick("left", $Coord[0], $Coord[1], 1)
        Else

                MsgBox(48, '"Oups !"', "Pixel(s) introuvable(s) !")

        EndIf
 
Tu n'est pas obligé de faire un MouseMove() puis un MouseClick(), tu peux faire direct un MouseClick() mais le curseur mettra plus de temps à se déplacer jusqu'au pixel à cliquer...




Voila,



Piwid00. :P

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 17:31
par L7V
Merci a tous vous êtes des dieux ^^ :mrgreen:

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 19:23
par L7V
Par contre je voudrais que si le premier pixel n'est pas trouver il en cherche un autre puis encore un autre jusqu'a ce qu'il en trouve un et que si il n'en trouve aucun qu'il cherche un autre pixel ( le dernier ) et que une fois avoir cliquer sur ceux dernier pixel qu'il refassent la boucle d'haut dessus mais j'ai essayer plusieurs chose et rien ne marche :
► Afficher le texte

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 19:43
par ragnoff
En lisant tout cela, une autre solution me vient a l esprit.
Plutot que d utiliser un pixelsearch, tu peut faire une autre commande : pixelgetcolor.
par exemple :

Code : Tout sélectionner

[spoiler=]
while $x < $xmax
while $y < $ymax
$couleur = pixelgetcolor($x,$y)

if =couleur = ... then ....

$y = $y + 1
Wend
$x = $x + 1 
Wend

[/spoiler]
 
Il te suffirait de faire une telle boucle, et en etant un peu ingenieu sur le test, il suffirait de l executer une seulle fois pour regarder les 3 ou 4 conditions voulu selon les oculeurs obtenues.

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : ven. 22 janv. 2010 20:54
par L7V
J'avais plutôt pensez a un truc dans le genre mais le pixel 2 est le dernier pixel donc toujours trouver et si je met coord donc le premier pixel a rechercher cela se fais seulement une fois ... =/

Code : Tout sélectionner

  Do 
 $Coord = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, 0xFF9659, 1)
    If Not @error Then
        MouseMove($Coord[0], $Coord[1], 1)
        MouseClick("left", $Coord[0], $Coord[1], 1)
        Else
$deux = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight,0xFFC80B , 1)
MouseMove($deux[0], $deux[1], 1)
        MouseClick("left", $deux[0], $deux[1], 1)
    EndIf
    
Until ( $deux )
Je voudrais que l'action se repette un nombre de fois indeterminer jusqu'a ce qu'elle trouve $Coord mais la sa trouve $deux et sa s'arrete =/

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : sam. 23 janv. 2010 10:59
par Habibsbib
Bon, ben finalement tu ne t'es pas servi de ma fonction ^^

Elle est pourtant toute indiquée pour tes besoins :roll:

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : sam. 23 janv. 2010 11:03
par L7V
Non car la tienne clique simplement sur tous les pixels de la même couleurs moi je ne veut pas sa je veut que sa cherche des pixels que je rentre jusqu'a ce que sa en trouve un et que sa clique dessus une fois trouver ... mais c'est quand même très gentil de ta part ;)

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : sam. 23 janv. 2010 16:17
par Habibsbib
Ma fonction fait exactement ça :roll:

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : dim. 24 janv. 2010 09:11
par L7V
Ah ok j'avais pas compris sa dutout ... :| Et est-ce que je peut enlever la deuxième fonction qui dit le nombre de pixel pareil ? Parceque inutile pour mon problème ... je vais essayer ta fonction Par contre a la place de $scan dans ton script il faut mettre quoi ?


EDIT : J'ai tout essayer je crains que ton scipt ne marche pas :cry:

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : dim. 24 janv. 2010 14:07
par Habibsbib
Pour l'autre focntion, tu peux l'enlever. Pour les flags, rien de plus simple :

Code : Tout sélectionner

 _ColorClick (couleur à cliquer en hexadécimal, bouton avec lequel cliquer 'left' ou 'right', nombre de clics par pixel de couleur, vitesse (de 0 le plus rapide à 100 le plus lent.)
Par contre, je l'ai récemment testée et elle marche sur les XP, et les 2000.

Re: [..] Demande fonction PixelSearch+MouseClick

Posté : dim. 24 janv. 2010 15:44
par Simoes03
Voila un script que j'avais fait il y a un petit moment:
(Sachant que mon écran fait 1440*900)

Code : Tout sélectionner

For $b = 1 to 20
    For $a = 1 to 10
        If Not @error Then
            $coord = PixelSearch( 0, 0, 1440, 900, 0x996100)
            MouseClick("left" , $coord[0] , $coord[1], 1 ,0)
            Sleep(50)
            MouseClick("left" , $coord[0] + 50 , $coord[1] + 50,1)    #Cette ligne n'est pas nécessaire pour ton projet
            Sleep(50)                                                               #Idem
            Send("{ENTER}")                                                     #Idem
            Sleep(12200)                                                          #Idem
            Send("{ENTER}")                                                     #Idem
        EndIf
    Next
MouseClick("left" , 508, 138, 1,0)                                                        #Idem
Next
 
En espérant que ça pourras te servir...