[R] Contrôle de Couleur

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

[R] Contrôle de Couleur

#1

Message par JIF »

Bonjour, j'ai enfin résolut mon problème en ce qui concerne mes vidéos en streaming sur Mozilla Firefox. Ce pendent; Je cherche actuellement a contrôlé l'affichage de mes pages web sur mon site.
Pour sella j'ai mis la fonction PixelSearch, dont je me suis documenté sur la doc technique.
Avec des test la fonction semble correspondre a ce que je cherche a faire a mon script. J'ai réussi a la faire fonctionné impeccablement sur IE 8. Mais le probémme actuélement ses que je n'arrive pas a la faire fonctionné pour Mozilla Firefox. Je n'est pas le msgbox qui ce lance.

Merci de me donné la solution a mon problème.

Voici le site ou je fais mes test de script.
supprimé par JIF

Voici le code que j'utilise actuellement pour tester ma fonction sur Mozilla Firefox

Code : Tout sélectionner

While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 843, 783, 853, 783, 0xD4D4D2 )
If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 843, 783, 853, 783, 0xD4D4D2, 0 )
If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
EndIf
Wend
Ma résolution est 1280x1024 pixels.
Cordialement JIF,
Modifié en dernier par JIF le lun. 01 juin 2009 18:51, modifié 2 fois.
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Contrôle de Couleur

#2

Message par jumby »

Pour que le rectangle soit détecté sous firefox, il faut changer l'écart possible du pixel recherché. Avec un écart de 25, le rectangle est trouvé sur IE et sur firefox.

Code : Tout sélectionner

While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 843, 783, 853, 783, 0xD4D4D2 )
If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 843, 783, 853, 783, 0xD4D4D2, 25 )
If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
EndIf
Wend
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#3

Message par JIF »

Merci de ta réponsse jumby; cependant j'ai un petit souci.
ta réponsse a bien marché pour les msgbox, mais j'ai du malle a apliqué la fonction pour des MouseClick.

Voici le script actuel

Code : Tout sélectionner

While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left", 848, 805, 1, 1, $coord[0] & "," & $coord[1])                                      
        MouseClick("left", 848, 788, 1, 1, $coord[0] & "," & $coord[1])
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
    MouseClick("left", 848, 805, 1, 1, $coord[0] & "," & $coord[1])                          
    MouseClick("left", 848, 788, 1, 1, $coord[0] & "," & $coord[1])
EndIf

Wend
Ques qui ne vas pas dans mon nouveau script de test ?

Merci de me répondre.
Cordialement JIF,
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Contrôle de Couleur

#4

Message par jumby »

Le problème venait de la syntaxe de la fonction mouseclick.

Ceci est la bonne syntaxe :

Code : Tout sélectionner

While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1]                            
        MouseClick("left",  $coord[0] , $coord[1])
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1])                        
        MouseClick("left",  $coord[0] , $coord[1])
EndIf

Wend
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#5

Message par JIF »

Merci de ta réponse jumby, mais je ne comprend pas pourquoi tu à enlevé les cordonnés de mes 2 MouseClicks ?
Je ne comprend pas comment mon script peut fonctionné maintenant ?

Ce que je voudrais, c'est que le MousClick s'effectue lorsqu'il a trouvé la couleur dans la zone de recherche déterminé. Et ensuite une foie le clics effectué a partir du contrôle de couleur, que mon second MouseClick s'effectue et que le reste de mon code continu.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Contrôle de Couleur

#6

Message par jumby »

J'ai supprimé tes coordonnées car je pensais que tu voulais diriger le mouseclick à l'endroit ou les pixels ont été trouvé.
Dans le code suivant :

Code : Tout sélectionner

If Not @error Then
        MouseClick("left", 848, 805, 1, 1, $coord[0] & "," & $coord[1])                                      
        MouseClick("left", 848, 788, 1, 1, $coord[0] & "," & $coord[1])
EndIf
Si tu souhaites faire le premier click avec les coordonnées : 848 en x et 805 en y, la bonne syntaxe est :
MouseClick("left", 848, 805, 1)

Et si tu étais dans la même logique, le second click :
MouseClick("left", 848, 788, 1)
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#7

Message par JIF »

Merci de ta réponse jumby. Mais je n'arrive pas a faire fonctionné mon scripte de test. Voici le code que j'ai utilisé.

Code : Tout sélectionner

MouseClick("left", 142, 1008, 1, 1)
While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 845, 805, 848, 808, 0xD0D0C6 )
If Not @error Then
        MouseClick("left", 848, 805, 1, 1, $coord[0] & "," & $coord[1])                                      
        MouseClick("left", 848, 788, 1, 1, $coord[0] & "," & $coord[1])
EndIf                        
      
Wend  

; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 845, 805, 848, 808, 0xD0D0C6, 30 )
If Not @error Then
        MouseClick("left", 848, 805, 1, 1, $coord[0] & "," & $coord[1])                                      
        MouseClick("left", 848, 788, 1, 1, $coord[0] & "," & $coord[1])
EndIf
Le script m'affiche un message d'effeur : incorect number of parameter fonction call.

Ou est l'erreur ?

PS : Cette syntax est la seul qui a l'aire de fonctionné coréctement et qui fait ce que je voudrais faire faire a mon script. L'ennui est qu'elle ne continu pas la suite de mon scripte

Code : Tout sélectionner

 While 1                                                                                 ; Début de la boucle
; --------------------------------------------------------------------------------------------------------------------------------------------------
    MouseClick("left", 140, 1010, 1, 1)                                                  ; Démarage de Mozila Firefox  
; --------------------------------------------------------------------------------------------------------------------------------------------------
        
While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 840, 802, 850, 810, 0xD0D0C6 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1])                            
    

EndIf
Wend

; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 840, 802, 850, 810, 0xD0D0C6, 50 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1])                        
       
EndIf
    
    MouseClick("left", 848, 788, 1, 1)
Impossible actuelement que le script fait le MouseClick ("left", 848, 788, 1, 1).

Ou est l'erreur ?

Merci de me répondre.
Cordialement JIF,
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#8

Message par JIF »

Sayer, je pensse avoir localisé le problème; Le problème se siturait au niveau de ma boucle. D'apres ce que j'ai compris dans le tuto sur le forum. Ce n'est pas une boucle While que je doit utilisé mais une boucle Do.
Le p^robléme est que je ne sais pas comment metre en place ma boucle do. Comment pourais-je métre en place ma boucle do avec ce code qui est a mon avis la bonne syntax ?

Code : Tout sélectionner

MouseClick("left", 140, 1010, 1, 1)

; début boucle do

$coord = PixelSearch( 840, 802, 850, 810, 0xD0D0C6 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1])                            
    

EndIf

; fin de la boucle do

$coord = PixelSearch( 840, 802, 850, 810, 0xD0D0C6, 50 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1])                        
       
EndIf
    
    MouseClick("left", 848, 788, 1, 1)
 
Merci de me répondre.
Cordialement JIF,
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Contrôle de Couleur

#9

Message par jumby »

Je n'arrive toujours pas à saisir si tu veux diriger tes mouseclick vers une coordonnée prédéfinie ou à l'emplacement où le pixel a été trouvé.
Essai de bien décrire ce que tu veux que ton code fasse.

Si tu souhaites diriger tes mouseclick vers une coordonnée prédéfinie, en réutilisant ma correction de syntaxe ainsi que les coordonnées dans tes codes cela donne :

Code : Tout sélectionner

While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left", 848, 805, 1)                                      
        MouseClick("left", 848, 788, 1)
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
    MouseClick("left", 848, 805, 1)                          
    MouseClick("left", 848, 788, 1)
EndIf

Wend
Si tu souhaites diriger tes mouseclick vers une coordonnée où le pixel a été trouvé, en réutilisant ma correction de syntaxe ainsi que les coordonnées dans tes codes cela donne :

Code : Tout sélectionner

While 1
; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1]                            
        MouseClick("left",  $coord[0] , $coord[1])
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
        MouseClick("left",  $coord[0]  , $coord[1])                        
        MouseClick("left",  $coord[0] , $coord[1])
EndIf

Wend
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#10

Message par JIF »

Merci de ta réponse Jumby, le script de test fonctionne, mais voila sans la boucle While impossible de donné une utilité quelconque a la fonction étant donné que le contrôle de pixels s'effectue instantanément. Et les MouseClick, sont la pour êtres effectué après la détection de la couleur. Or si le script contrôle la couleur instantanément ma page web n'a pas le temps de ce lancé et donc aucune utilité a la fonction. la seul possibilité a mon niveau est la Boucle While, mais après la fin de 2ieme MouseClick il revient sur le premier. Si par exemple j'avais mit 4 MouseClick il reviendrai après la 4ieme au premier. Logique vue que c'est boucle While. Il me faudrait donc passé par une boucle
Do, mais je ne sais pas comment l'integré dans mon script de test. Sachan également que le script original a une Boucle While.

Voici le script original.
► Afficher le texte

Il faut savoir que une je métré par la suite le script de détection du pixels pour chaque vidéos de la 10-1 à la 10-2.

Pour information j'utilise cette syntax. J'ai enlevais ici la Boucle While étant donné que c'est le seul obstacle qui reste a corriger avant que ce poste ne soit répondu résolut.
En matent une boule Do je pense que sa résoudra le problème. mais comment les intégré a mon script original ?
Telle est la question.

Ce que je veux, c'est que le contrôle de pixels ce répète infiniment tant qu'il n'a pas trouvé les ou le bon pixel dans la zone prédéfinit. Une foie la pixel trouvé la Boucle Do s'arrête et le script continu.

Code : Tout sélectionner

; Find a pure red pixel in the range 0,0-20,300
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left", 848, 805, 1)                                      
        MouseClick("left", 848, 788, 1)
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
    MouseClick("left", 848, 805, 1)                          
    MouseClick("left", 848, 788, 1)
EndIf
PS : Une foie que sa fonctionnera j'enlèverai les sleep(4000) et peut être par la suite les sleep(3000)
Ces sleep sont actuellement provisoire en attendant que la syntaxe de la fonction de contrôle de pixel fonctionne. Une foi qu'elle fonctionnera; la suite du code pourra ce lancé sen aucune encombre étant donné que la page web aura chargé. Car Cette zone de pixels est l'une des dernière a être chargés sur la page web.

Merci de me répondre.
Cordialement JIF,
Modifié en dernier par JIF le dim. 31 mai 2009 12:41, modifié 1 fois.
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Contrôle de Couleur

#11

Message par jumby »

Une boucle For conviendrait.

Je propose ceci :

Code : Tout sélectionner

for $dectectionpixel = 1 to 999 step 1
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left", 848, 805, 1)                                      
        MouseClick("left", 848, 788, 1)
exitloop 1 ; On sort de la boucle
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
    MouseClick("left", 848, 805, 1)                          
    MouseClick("left", 848, 788, 1)
exitloop 1 ; On sort de la boucle
EndIf
Next
Je te laisse intégrer ceci dans ton script pour chaque vidéo.
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#12

Message par JIF »

La boule For ce comporte comme si il n'y avais pas de Boucle. Et pour que le script fonctionne, je doit le démarré sur la page ouverte. Mais lorsque je passe par l'intermédiaire de MouseClick("left", 142, 1008, 1, 1) pour ouvrir Mozilla Firefox le script ne fonctionne pas. Donc a mon avis ce n'est pas la boucle For qu'il faut utilisé ici.

PS : Je sais j'utilise un MouseClick pour Ouvrir Mozilla Firefox alors qu'il existe une fonction bien adapté pour l'ouvrir sen passé par un MouseClick. Mais d'abords j'apprends comment on met au point le contrôle de pixel avant de voir sa. Et oui malheuresement je suis pas un intelo je peut pas apprendre plumeur chose en même temps. :wink:
Et ou j'essayai d'enlever un maximum de sleep en premier ensuite j'essayai d'enlever un maximum de MouseClick. :D

Code : Tout sélectionner

MouseClick("left", 142, 1008, 1, 1) [color=#FF0000]; MouseClick qui vas ouvrir Mozilla Firefox.[/color]

for $dectectionpixel = 1 to 999 step 1
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left", 848, 805, 1)                                      
        MouseClick("left", 848, 788, 1)
exitloop 1 ; On sort de la boucle
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
    MouseClick("left", 848, 805, 1) [color=#FF0000] ; Ne s'effectue pas si je lance pas directement le script quand je suis sur la page web.[/color]                      
   MouseClick("left", 848, 788, 1) [color=#FF0000]; Ne s'effectue pas si je lance pas directement le script quand je suis sur la page web.[/color]                   
exitloop 1 ; On sort de la boucle
EndIf
Next
Merci de me répondre.
Cordialement JIF,
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Contrôle de Couleur

#13

Message par jumby »

Le for est une très bonne solution. Il faut juste augmenter la taille de la boucle car il a vite fait de faire les 999 fois le contenu de la boucle :

Code : Tout sélectionner

for $dectectionpixel = 1 to 999999 step 1
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2 )
If Not @error Then
        MouseClick("left", 848, 805, 1)                                      
        MouseClick("left", 848, 788, 1)
exitloop 1 ; On sort de la boucle
EndIf


; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$coord = PixelSearch( 842, 780, 852, 784, 0xD4D4D2, 30 )
If Not @error Then
    MouseClick("left", 848, 805, 1) 
   MouseClick("left", 848, 788, 1) 
exitloop 1 ; On sort de la boucle
EndIf
Next
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Contrôle de Couleur

#14

Message par JIF »

Merci de ta réponse jumby, et désolé pour le retard de la réponse. J'ai bien pris le temps de mètre mon script impeccablement. Il bug plus; il fonctionne ni quel. Je vien de le laissé 3 heurs et pas un seul bug. 8)
Ce qui mas pris beaucoup de temps, ces que j'ai du passé par une autre fonction en plus du pixelsherch, car mon script effectué trop rapidement.
Bref le script fonctionne niquel. Je te remercie encore de tes réponse jumby. :D

Ne vous en faites pas, bientôt une nouvelle question. Pour cette foie si chassé le dernier sleep qui résiste encore et encore a mon ignorance en autoit. :cry:
sleep(4000)

En attendant je vais un peut m'amusai avec la nouvel version de mon scripte. :lol:
Cordialement JIF,
Répondre