[Func] _ColorUDF

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
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

[Func] _ColorUDF

#1

Message 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.
Modifié en dernier par Habibsbib le ven. 08 janv. 2010 18:30, modifié 2 fois.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [UDF] _ColorUDF

#2

Message 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.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
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: [UDF] _ColorUDF

#3

Message 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" ?
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [UDF] _ColorUDF

#4

Message 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...
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
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: [UDF] _ColorUDF

#5

Message par Habibsbib »

Bon ok, je mets "Func" :roll:
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Func] _ColorUDF

#6

Message par Iste »

Pour vos testes, un petit passage sous paint et hop !
Signez ici
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: [Func] _ColorUDF

#7

Message 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?
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.
Répondre