[R] Problème de clic sur pixel.

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

[R] Problème de clic sur pixel.

#1

Message par ChMuX »

Bonjour, voici mon probleme: je cherche un certain pixel sur l'écran et le fait cliquer avec la souris dessus mair probleme car le pixel en question bouge d'enviran 3cm dans nimporte quel direction toute les minutes donc la souris clique sur son emplassement précédent. Voici un bout de mon script aidé moi à régler le probleme svp =).

Code : Tout sélectionner

 $bleue = PixelSearch( 50, 50, 960, 575, 0x0000FE, 0)
    If Not @error Then
        MouseClick( "left",250,347,1,10) 
        Sleep(40000)
        MouseClick("left",384,418,1,50)
        MouseClick("left",890,671,1,50)
        MouseClick("left",$bleue[0],$bleue[1],1,50)
        MouseClick("left",890,671,1,50)
        MouseClick("left",$bleue[0],$bleue[1],1,50)
        Sleep(15000)
        MouseClick("left",890,671,1,50)
        MouseClick("left",$bleue[0],$bleue[1],1,50)
        MouseClick("left",890,671,1,50)
        MouseClick("left",$bleue[0],$bleue[1],1,50)
        Sleep(15000)
    MouseClick("left",826,452,1,30)
    EndIf
Modifié en dernier par jbnh le sam. 05 juil. 2008 11:48, modifié 4 fois.
Raison : Ne pas oublier le [..] au debut du titre, et les balises de code ! Merci.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: probleme de clique

#2

Message par Tlem »

En effectuant quelques recherches sur le forum, vous trouverez un code qui recherche un pixel dans un rectangle définit, et qui retourne les coordonnées de ce pixel, ce qui permet de cliquer dessus !!!
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#3

Message par ChMuX »

Evidement que j'ais fait des recherche mais comme je suis débutant j'ais peut etre lu le bon topic mais sans comprendre que c'étais la reponse à mon probleme. SVP aidé moiiiiiiiiiiiiiii!!!!
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#4

Message par ChMuX »

Voici ce que je veux faire :
-recherche d'un pixel (rouge par exemple) se trouvant sur tout l'écran(peut importe par quel endroit la souris commence à cliquer), la souris clique dessu. Faire cette action indéfiniment jusqu'à aparition d'un autre pixel (bleu par exemple). <======= cette partie marche à merveille

-ensuite si le pixel bleu est trouvé, stoper la 1ere partie et faire cliquer la souris sur le pixel bleu (il n'est qu'à un seul endroit sur l'écran formant un "paquet" de ce pixel d'une taille d'environ 1cm de diametre) sachant qu' il faut remetre à jour sa position sur l'écran car il bouge juste aprés que la souris ai cliqué dessus, puis au bout de 2 clique ce pixel disparait de l'écran, donc revenir à l'étape 1. <============ cette parite coince :x


Voila, j'espere avoir été assez clair 8)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#5

Message par Tlem »

Votre problème et simple.
Il vous faut donc rechercher en permanence le pixel bleu, et celons si il est trouvé ou non, vous faites vos actions en conséquence.

Cela donne quelque chose dans ce genre (A vous de vérifier et adapter) :

Code : Tout sélectionner

Dim $bleu
HotKeySet("{Esc}", "Quitter")
For $i = 0 To 120 Step 1

    $bleu = PixelSearch(50, 80, 700, 450, 0x0000FE, 0) ; Recherche du pixel bleu.

    Select
        Case @error ; Si pas de pixel bleu alors action ci dessous.
            $coord = PixelSearch(50, 80, 960, 575, 0x59564D, 0)
            MouseClick("left", $coord[0], $coord[1], 1, 30)
            MouseClick("left", $coord[0] + 30, $coord[1] + 30, 1, 30)
            Sleep(4000)
            ; plus le reste des actions du pixel 'Rouge'
            
        Case Else ; Si pixel bleu alors action si dessous.
            MouseClick("left", 250, 347, 1, 10)
            Sleep(40000)                                        ; Pause de 40 secondes !!!
            MouseClick("left", 384, 418, 1, 50)
            MouseClick("left", 890, 671, 1, 50)
            $bleu = PixelSearch(50, 80, 700, 450, 0x0000FE, 0) ; Le pb ici c'est que le script
                                                               ; a fait une pause de 40 secondes.
                                                               ; Donc est-ce que le pixel bleu
                                                               ; est toujours là ???
            MouseClick("left", $bleu[0], $bleu[1], 1, 50)
            MouseClick("left", 890, 671, 1, 50)
            MouseClick("left", $bleu[0], $bleu[1], 1, 50)
            Sleep(15000)
            MouseClick("left", 826, 452, 1, 30)

    EndSelect
Next

Func Quitter()
    Exit 0
EndFunc   ;==>Quitter
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#6

Message par ChMuX »

Cool, mais reste une erreur :cry: :
Error:subscript used with non-array variable

Code : Tout sélectionner

$bleu = PixelSearch(50, 80, 960, 575, 0x0000FE, 0) 
MouseClick("left", $bleu[0], $bleu[1], 1, 50) ;<========= ici se produit l'erreur(alors que le pixel est toujours présent)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#7

Message par Tlem »

Cela veut donc dire que la recherche du pixel bleu n'a pas retourné de coordonnées.

Soit la couleur n'est pas la même, soit le pixel ne se trouve pas dans le carré de recherche.

Vu le peut d'information sur le déroulement des événements, ne pouvant voir ce que vous voyez, et de part tout ce qui à été dit depuis le début de ce post, vous avez les éléments pour résoudre votre problèmes.

Merci donc de prendre le temps de comprendre, et d'adapter les exemples fournis !
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#8

Message par ChMuX »

Quand vous dites que c'est soit le pixel qui ne se trouve pas dans le caré(impossible il si trouve) ou soit que le pixel a changé de couleur(ne serait-ce pas l'emplaçement précédant du pixel bleu qui est maintenant d'une autre couleur?)

J'ais pensé à quelque chose :

Code : Tout sélectionner

$bleu = PixelSearch(50, 80, 960, 575, 0x0000FE, 0)  
MouseClick("left", $bleu[0], $bleu[1], 1, 50)  ;<=== l' erreur se produit ici donc est ce que se ne serait pas la 1ere position du pixel qui est retourné ici ?
Et que veut dire :

Code : Tout sélectionner

Dim $bleu
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#9

Message par Tlem »

ChMuX a écrit :est ce que se ne serait pas la 1ere position du mixel qui est retourné ici ?
Non, puisque l'erreur est :
Error:subscript used with non-array variable
Autrement dit la variable $bleu n'est pas un tableau.
Par ce que :

Code : Tout sélectionner

$bleu = PixelSearch(50, 80, 960, 575, 0x0000FE, 0)
n'a pas retourné les coordonnées du pixel bleu.

D'ailleurs pour en être persuadé, rajouter la gestion de l'erreur juste aprés la recherche du pixel, comme ceci :

Code : Tout sélectionner

; Extrait du code du Case else :
            $bleu = PixelSearch(50, 80, 960, 575, 0x0000FE, 0)
            If @error Then  Msgbox(16,"Erreur","Le pixel 0x0000FE n'a pas été trouvé") ; La ligne  a rajouté.
            MouseClick("left", $bleu[0], $bleu[1], 1, 50)  
            MouseClick("left", 890, 671, 1, 50)
            MouseClick("left", $bleu[0], $bleu[1], 1, 50)
            Sleep(15000)
            MouseClick("left", 826, 452, 1, 30)
ChMuX a écrit :j'aurais une autre question: que veux dire

Code : Tout sélectionner

Dim $bleu
http://www.autoitscript.fr/forum/viewto ... f=11&t=616
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#10

Message par ChMuX »

Oui j'ais bien la msgbox mais je ne comprend pas du tout la le pixel est présent et dans le carré !!! :shock:

Mais arréter moi si je me trompe, il est bien possible de repérer 1 seul pixel bleu se trouvant sur l'écran ou pas?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#11

Message par Tlem »

ChMuX a écrit :Mais arréter moi si je me trompe, il est bien possible de repérer 1 seul pixel bleu se trouvant sur l'écran ou pas?
Oui si vous en connaissez la couleur exacte, ou alors il faut paramétrer la fonction PixelSearch pour rechercher des couleurs proches, ainsi que la zone de recherche du pixel.

Dans ce code :

Code : Tout sélectionner

$bleu = PixelSearch(50, 80, 960, 575, 0x0000FE, 0)
- La variable $bleu devient un tableau de 2 valeurs (Coordonnées du pixel de couleur 0x0000FE) si celui-ci est trouvé.

- La fonction PixelSearch(50, 80, 960, 575, 0x0000FE, 0) cherche un pixel de couleur exacte 0x0000FE dans un carré représenté par les coordonnées suivantes : 50-80 à 960-575

Il suffit donc que le pixel recherché se trouve en dehors des coordonnées indiquées, ou que sa couleur soit légèrement différente de celle demandée, pour que ça ne fonctionne pas !!!
Vérifier donc le premier point, et pour le second, modifier la valeur du shade-variation (Voir l'aide de la commande PixelSearch) pour élargir la plage de couleur.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#12

Message par ChMuX »

C'est justement ça que je ne comprend pas car la couleur est la meme (j'ais vérifié) et le pixel se trouve dans le carré...
Je vais quand meme testé pour la recherche d'une couleurs presque égale je vérais bien :lol:
ChMuX
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 23 janv. 2008 19:05
Status : Hors ligne

Re: [..] Problème de clic sur pixel.

#13

Message par ChMuX »

OURAAAA sa marche!!!! Merci à tous(surtout a Tlem) :D :D :D :D :D
Répondre