Page 1 sur 1

[Func] _ColorUDF

Posté : ven. 08 janv. 2010 15:27
par Habibsbib
Bonjour.

Une petite fonction à deux francs cinquante, que j'ai programmée à mes heures perdues, permettant de cliquer sur touts les pixels d'une même couleur sur votre écran. D'ailleurs, je sais pas si ça marhce, à tester...
Elle fonctionne par balayage de l'écran : elle configure un cadre de recherche de 2 pixels de largeur, et balaye votre écran dans sa largeur de plusieurs PixelSearch, avec à chaque fois un MouseClick() sur les pixels de couleur demandée. Avec aussi _ColorGetNumber qui retourne le nombre de pixels de la même couleur sur vôtre écran (approximatif), ou alors le pourcentage, selon le flag utilisé.

UDF:
  • _ColorClick($color ;la couleur du pixel à cliquer, $button ;le bouton (droite ou gauche) à enfoncer, $number ;le nombre de clics par pixel, $speed ;la vitesse de clic par pixel)
  • _Color_GetNumber($colorcheck ;la couleur à vérifier, $format ;flag 0 pour le nb de pixels, flag 1 pour un pourcentage.)
Voila le code :

Code : Tout sélectionner

;~ ================================================================================================
;~ Objet : Fonction _ColorClick
;~ Auteur : HabibSbib
;~ Contact : habibsbib@hotmail.fr
;~ Langue : Français
;~ Version : 1.0
;~ Licence : Aucune
;~ Année de production : 2009
;~ Description : Une fonction permettant de combler partiellement les lacunes du PixelSearch de la version 3.0 d'AutoIt.
;~ ================================================================================================
Func _ColorClick ($color, $button, $number, $speed)
    $scan = 0   
    If (@DesktopWidth>@DesktopHeight) Then
        Do
            $coord = PixelSearch ($scan, 0, $scan, @DesktopHeight, $color)
            If not @error Then
                MouseClick ($button, $coord[0], $coord[1], $number, $speed)
            Else
                sleep(0)
            EndIf
            $scan+=2
        Until ($scan=@DesktopWidth)
    EndIf
    If (@DesktopHeight>@DesktopWidth) Then
        Do
            $coord = PixelSearch ($scan, 0, $scan, @DesktopWidth, $color)
            If not @error Then
                MouseClick ($button, $coord[0], $coord[1], $number, $speed)
            Else
                sleep(0)
            EndIf
            $scan+=2
        Until ($scan=@DesktopHeight)
    EndIf
EndFunc

Func _Color_GetNumber($colorcheck, $format)
    Global $getnumber
    $scan = 0   
    If (@DesktopWidth>@DesktopHeight) Then
        Do
            $coord = PixelSearch ($scan, 0, $scan, @DesktopHeight, $colorcheck)
            If not @error Then
                $getnumber+=1
            Else
                sleep(0)
            EndIf
            $scan+=2
        Until ($scan=@DesktopWidth)
    EndIf
    If (@DesktopHeight>@DesktopWidth) Then
        Do
            $coord = PixelSearch ($scan, 0, $scan, @DesktopWidth, $colorcheck)
            If not @error Then
                $getnumber+=1
            Else
                sleep(0)
            EndIf
            $scan+=2
        Until ($scan=@DesktopHeight)
    EndIf
$total_pixels=(@DesktopWidth*@DesktopHeight)
$getnumber_1 = ($getnumber/=$total_pixels)
$getnumber_2 = ($getnumber_1*=100)
Select
    Case $format ="0"
        Return $getnumber_2
    Case $format = "1"
        Return $getnumber
EndSelect
EndFunc
Voila, si c'est inutile, je l'enlève.

Bonne journée.

Re: [UDF] _ColorUDF

Posté : ven. 08 janv. 2010 17:57
par tolf
Habibsbib a écrit :D'ailleurs, je sais pas si ça marhce, à tester...
La base avant de poster une fonction c'est de la tester...
De plus, "UDF" correspond plutôt à un ensemble de fonctions, une bibliothèque, donc met la balise "Func" qui correspond à ce topic.

Re: [UDF] _ColorUDF

Posté : ven. 08 janv. 2010 18:06
par Habibsbib
Enfin, j'ai testé le principe de bases, mais pas avec toutes les possibilités, problèmes et cas spéciaux (ex : + de 2 px par rangée de 2, ben je sais pas ce que ça fait...).

Autrement, puisqu'il y a plus d'une fonction, je ne peux pas laisser "UDF" ?

Re: [UDF] _ColorUDF

Posté : ven. 08 janv. 2010 18:16
par tolf
Oui mais les 2 fonction font la même chose, à part que la fonction 2 = la première plus quelques lignes donc moi je ne vois qu'une fonction. Enfin bon, le problème c'est surtout la fonction non testée...

Re: [UDF] _ColorUDF

Posté : ven. 08 janv. 2010 18:19
par Habibsbib
Bon ok, je mets "Func" :roll:

Re: [Func] _ColorUDF

Posté : jeu. 01 juil. 2010 20:37
par Iste
Pour vos testes, un petit passage sous paint et hop !

Re: [Func] _ColorUDF

Posté : jeu. 01 juil. 2010 21:08
par pop45
Dans la fonction "getnumber" sa sert a quoi de récupérer les coordonnée du pixel si on veut juste savoir si il est la ou pas?