[..] Demande fonction PixelSearch+MouseClick

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

[..] Demande fonction PixelSearch+MouseClick

#1

Message 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
Modifié en dernier par L7V le mer. 20 janv. 2010 16:31, modifié 1 fois.
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#2

Message par L7V »

Personne ne peut me faire se script ? =( Il consisterai en bref a chercher un pixel et a cliquer dessus .
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#3

Message 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
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#4

Message 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 ...
Alienator
Niveau 1
Niveau 1
Messages : 3
Enregistré le : ven. 25 janv. 2008 12:08
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#5

Message 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.


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

Qu'en penses-tu ? ?
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#6

Message 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.
Piwidoo
Niveau 1
Niveau 1
Messages : 14
Enregistré le : ven. 30 oct. 2009 11:17
Localisation : $Coord = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, "Moi", 1)
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#7

Message 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
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#8

Message par L7V »

Merci a tous vous êtes des dieux ^^ :mrgreen:
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#9

Message 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
ragnoff
Niveau 3
Niveau 3
Messages : 34
Enregistré le : ven. 24 juil. 2009 17:11
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#10

Message 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.
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#11

Message 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 =/
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#12

Message par Habibsbib »

Bon, ben finalement tu ne t'es pas servi de ma fonction ^^

Elle est pourtant toute indiquée pour tes besoins :roll:
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#13

Message 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 ;)
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#14

Message par Habibsbib »

Ma fonction fait exactement ça :roll:
Avatar du membre
L7V
Niveau 1
Niveau 1
Messages : 9
Enregistré le : dim. 17 janv. 2010 19:28
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#15

Message 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:
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#16

Message 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.
Avatar du membre
Simoes03
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 12 janv. 2010 19:11
Localisation : Quelque part au dessus de la méditerranée. Pourquoi?
Status : Hors ligne

Re: [..] Demande fonction PixelSearch+MouseClick

#17

Message 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...
Mon grand-père buvait un litre de whisky par jour et il est mort à 103 ans.
A l'incinération, on a cru que le feu ne s'arrêterait jamais. (Sloppy White)
Répondre