Page 1 sur 1

[R] Pixelgetcolor et programme

Posté : mar. 08 juil. 2008 18:09
par hck
Salutations

J'ai réalisé un court programme pour facilité la recherche de pixel dans mes futur script,
pour cela il se base sur trois pixel proche du curseur,

Voilà mon code :
► Afficher le texte
Le soucis est que les couleurs ne sont pas juste, pourriez vous me dire ou j'ai eu faux ?
Je galère pour trouver ça, pourtant mon script est "logique", et je ne trouve pas de faute :x



Autre soucis, il est incompilable, détécté comme trojan par avast :/

Re: [..] Pixelgetcolor et programme

Posté : mer. 09 juil. 2008 21:44
par timmalos
Le soucis est que les couleurs ne sont pas juste
Peux tu expliquer le problème?

Re: [..] Pixelgetcolor et programme

Posté : mer. 09 juil. 2008 21:51
par Tlem
Pour le problème de détection par Avast, ajoutez dans les directives de compilation la non utilisation de la compression UPX, et éventuellement selon votre version, la non utilisation du mode ANSI.

Si vous utilisez Scite4Autoit pour compiler, ajoutez ceci dans votre script :

Code : Tout sélectionner

#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseAnsi=n
Pour le problème des couleurs, je dirais pareil que timmalos ...
Je n'ai pas tout compris non plus !

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 00:28
par hck
Merci bien, pour la couleur c'est simple, faites le teste, ouvrez window info, ouvrez mon script, placez votre souris sur un point précis, appuyez sur F2, la première couleur du scripte ne correspond pas a celle de window info !
d'où viendrais le problème ?

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 01:59
par Tlem
Ajoutez MouseClick("left") au début de votre fonction 'Com'.

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 03:22
par hck
Rien y fait, les couleurs ne sont toujours pas bonne :x

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 08:23
par Tlem
Ceci fonctionne chez moi :

Code : Tout sélectionner

func com()
    MouseClick("left")
    $pos = MouseGetPos()
    $x = $pos[0]
    $y = $pos[1]
    ;MouseMove(0,0,1)
    $pix0 = PixelGetColor($x,$y)
    msgbox(0,"",$pix0)
    $pix0 = hex($pix0,6)
    $pix1 = PixelGetColor($x + 1,$y)
    $pix1 = hex($pix1)
    $pix2 = PixelGetColor($x,$y + 1)
    $pix2 = hex($pix2)
    MouseMove($pos[0],$pos[1],1)
    msgbox(0,"",$pix0 & " " & $pix1 & " " & $pix2)
    GUICtrlSetData($code,'while 1' & @CRLF & '$coord = PixelSearch ( $x , $y , $x2 , $y2 , 0x' & $pix0 & ')' & @CRLF & '      if not @error then' & @CRLF & '         if Hex(pixelgetcolor($coord[0]+1, $coord[1] )) = "' & $pix1 & '" then' & @CRLF & '            if Hex(pixelgetcolor($coord[0], $coord[1] +1)) = "' & $pix2 & '" then' & @CRLF & '               exitloop' & @CRLF & '            endif' & @CRLF & '         endif' & @CRLF & '      endif' & @CRLF & 'WEnd')
endfunc

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 11:28
par hck

Code : Tout sélectionner

func com()
    MouseClick("left")
    $pos = MouseGetPos()
    $x = $pos[0]
    $y = $pos[1]
    ;MouseMove(0,0,1)
    $pix0 = PixelGetColor($x,$y)
    $pix0 = hex($pix0,6)
        msgbox(0,"",$pix0)
    $pix1 = PixelGetColor($x + 1,$y)
    $pix1 = hex($pix1)
    $pix2 = PixelGetColor($x,$y + 1)
    $pix2 = hex($pix2)
    MouseMove($pos[0],$pos[1],1)
    msgbox(0,"",$pix0 & " " & $pix1 & " " & $pix2)
    GUICtrlSetData($code,'while 1' & @CRLF & '$coord = PixelSearch ( $x , $y , $x2 , $y2 , 0x' & $pix0 & ')' & @CRLF & '      if not @error then' & @CRLF & '         if Hex(pixelgetcolor($coord[0]+1, $coord[1] )) = "' & $pix1 & '" then' & @CRLF & '            if Hex(pixelgetcolor($coord[0], $coord[1] +1)) = "' & $pix2 & '" then' & @CRLF & '               exitloop' & @CRLF & '            endif' & @CRLF & '         endif' & @CRLF & '      endif' & @CRLF & 'WEnd')
endfunc
 
En simplement bougeant la msg box, je n'obtient pas le même résultat, je doute que mon code soit faux, c'est moi qui ne comprend pas, Window Info ne donne pas la couleur en hexa ?

Soit dans mon exemple
screen.jpg
La couleur dans la msgbox ne devrait pas être 00324C ?

Merci de votre aide, je pense que je nage un peu là :x

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 11:35
par jbnh
Attention, une règle du forum a été ajoutée!

Si ca peut aider =>

Code : Tout sélectionner

$var = PixelGetColor( 10 , 100 )
MsgBox(0,"The hex color is", Hex($var, 6))
pour avoir la couleur hex.

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 14:37
par hck
désolé pour les règles, pour mon problème je recommence mon script, on verra ce que ça donne, car je n'arrive pas a trouver le problème.

Un autre screen pour me faire comprendre :
http://img230.imageshack.us/img230/7/screenim4.jpg

Avec le code que j'ai utilisé présent sur le screen :
► Afficher le texte

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 15:53
par Tlem
Je viens de faire les essais avec votre code (Celui du premier post), et je suis tombé sur sur le même problème que vous !!!

J'ai trouvé cela étrange, et je me suis dit ... Mais quels sont les coordonnées capturées par la fonction Com() ???

Petite modification du script avec ceci :

Code : Tout sélectionner

traytip("",$pos[0] & "  " & $pos[1] & "  " & hex($pix0,6),0)
et là ... rhhhooooo mais les coordonnées ne sont pas bonne !!!

Alors, re-lecture du code, et là juste au niveau des fonctions Opt() je vois ceci :

Code : Tout sélectionner

Opt("MouseCoordMode", 0)
Donc petite transformation en

Code : Tout sélectionner

Opt("MouseCoordMode", 1)
et là, nickel chrome chaque couleur correspond aux coordonnées prévues. ;)

Re: [..] Pixelgetcolor et programme

Posté : jeu. 10 juil. 2008 16:42
par hck
Merci bien alors, je ne sais même pas pourquoi j'ai mis ça :]