[R] Traduire input en mousemove ou click

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
toto06
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 11 juil. 2011 16:29
Status : Hors ligne

[R] Traduire input en mousemove ou click

#1

Message par toto06 »

Bonjour je souhaite créer un script qui permet de créer un input (j l'ai deja fait en koda) on demande d'insérer des lettres DGHB (droite gauche haut bas ) et qui traduit cette chaine en mousemove puis mouse click


Exemple : Si l'utilisateur insert dans l'input "GBDDBH"

Code : Tout sélectionner

mousemove(pixelgauche)
mouseclick(pixelgauche)
sleep(500)
mousemove(pixelbas)
mouseclick(pixelbas)
sleep(500)
mousemove(pixeldroite)
mouseclick(pixeldroite)
sleep(500)
mousemove(pixeldroite)
mouseclick(pixeldroite)
sleep(500)
mousemove(pixelbas)
mouseclick(pixelbas)
sleep(500)
mousemove(pixelhaut)
mouseclick(pixelhaut)
sleep(500)


 
Merci d'avance
Modifié en dernier par toto06 le mer. 13 juil. 2011 16:58, modifié 1 fois.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#2

Message par TT22 »

Tien, essaye ça :
► Afficher le textevoir le code que j'ai fait
[blink]ATTENTION[/blink], il faut séparer les caractères par un espace.

Edit : Je viens de me rendre compte que j'ai oublié de mettre tes sleep(500) :?
J’espère que c'est pas grave :wink:
Cordialement,
TT22
toto06
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 11 juil. 2011 16:29
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#3

Message par toto06 »

Merci beaucoup ça a marché mais j comprend pas pk ta mi le include de file.au3

Le code est maintenant

Code : Tout sélectionner

#include <File.au3>
$Form1 = GUICreate("Form1", 405, 294, 302, 218)
$Input1 = GUICtrlCreateInput("InputBox", 120, 120, 161, 21)
$code = InputBox("Mouse","Veuillez entrer H ou B ou G ou D en les séparents par un espace :")

FileDelete(@TempDir&"\mouse")
FileWrite(@TempDir&"\mouse",$code)
_ReplaceStringInFile(@TempDir&"\mouse"," ",@CRLF)
$ligne = _FileCountLines(@TempDir&"\mouse")
$tour = 0
    While 1
    $tour = $tour + 1
    $rep=FileReadLine(@TempDir&"\mouse",$tour)
        If $rep = "h" Then
        mouseclick("left",751,9)
        EndIf
            If $rep = "b" Then
            $pos=MouseGetPos()
            mouseclick("left",751,835)
            EndIf
                If $rep = "g" Then
                $pos=MouseGetPos()
                mouseclick("left",12,441)
                EndIf
                    If $rep = "d" Then
                    $pos=MouseGetPos()
                    mouseclick("left",1570,441)
                    EndIf
                        If $tour = $ligne then ExitLoop
    WEnd
FileDelete(@TempDir&"\mouse")
MsgBox(64,"Mouse","Séquence terminée.")
Exit
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#4

Message par TT22 »

Le #include <File.au3> sert à faire fonctionner ces fonctions :
_ReplaceStringInFile()
_FileCountLines()

Edit : Cette partie :
► Afficher le textevoir la partie inutile
Ne sert à rien. Tu peux l'enlever :wink:
Cordialement,
TT22
toto06
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 11 juil. 2011 16:29
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#5

Message par toto06 »

Merci TT22 ;)
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#6

Message par TT22 »

Mais de rien :mrgreen:
Cordialement,
TT22
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#7

Message par Tlem »

N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
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é".
toto06
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 11 juil. 2011 16:29
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#8

Message par toto06 »

Mais ya un petit problème quand je met le script dans mon code il annule la suite j'i essayé d'enlever exit mais pas de solution . Pck j veux en fait faire cette tache puis faire des mouseclick sur démarrer puis ...... et réacomplir dans l'autre sens par exemple quand j'entre "gb"
il click à gauche puis en bas puis sur démarrer puis sur haut puis sur droite.

Merci pour ton soutien
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#9

Message par mikell »

"If $tour = $ligne then ExitLoop" te fait sortir de la boucle While où les lettres de l'input sont traduites en mouseclicks
Il faudrait rester dans cette boucle et créer des fonctions avec lecture de l'input dans la boucle
perso je préfère un GUICtrlCreateInput() qu'on peut mettre à jour et lire régulièrement, à une InputBox() qui est détruite après utilisation
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
toto06
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 11 juil. 2011 16:29
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#10

Message par toto06 »

j'ai supprimé
"If $tour = $ligne then ExitLoop" mais le problème persiste :(
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#11

Message par ZDS »

Bonjour,

Dans le fonctionnement actuel, tu prends une chaine de caractères en (HGBD)* que tu mets dans un fichier pour ensuite travailler sur le nombre de lignes du fichier, c'est un peu ajouter du boulot pour rien ^^

Voila une version beaucoup plus légère que le script précédent (par contre sur le principe je n'ai rien changé aux actions MouseClick à part les MousegetPos qui n'étaient utilisés nulle part donc hop je les ai fait sauter ^^, à toi de voir si il s'agit des bonnes positions que tu souhaites).

Code : Tout sélectionner

$code = InputBox("Mouse","Veuillez entrer H, B, G ou D :")
Local $lettres = StringSplit(StringLower($code),"")
For $i = 1 To $lettres[0]
    Switch $lettres[$i]
    Case "h"
        mouseclick("left",751,9)
    Case "b"
        mouseclick("left",751,835)
    Case "g"
        mouseclick("left",12,441)
    Case "d"
        mouseclick("left",1570,441)
    Case Else
        ; Rien
    EndSwitch
Next
Exit
A bientôt.

PS: Pour quelque chose de plus générique, ça serait bien de ne pas donner des valeurs en 751,9 ou 1570,441. Récupère la fenêtre active, choppe ses coordonnées, calcule les points d'ancrage voulus (c'est pas bien compliqué) et fait les clics là où il faut en prenant les coordonnées trouvées. Exemple tout con, ton script fait de la m***e sur un écran en 1024 par 768, ou sur une fenêtre qui n'est pas en plein écran ^^ Version modifiée :

Code : Tout sélectionner

Local $coords = [0,0,@DesktopWidth,@DesktopHeight,10] ; posX, posY, Largeur, Hauteur, Bordure
$code = InputBox("Mouse","Veuillez entrer H, B, G ou D :")
Local $lettres = StringSplit(StringLower($code),"")
For $i = 1 To $lettres[0]
    Switch $lettres[$i]
    Case "h" ; Clic en [posX+Largeur/2, posY+Bordure]
        mouseclick("left",$coords[0]+$coords[2]/2,$coords[1]+$coords[4])
    Case "b" ; Clic en [posX+Largeur/2, posY+Hauteur-Bordure]
        mouseclick("left",$coords[0]+$coords[2]/2,$coords[1]+$coords[3]-$coords[4])
    Case "g" ; Clic en [posX+Bordure, posY+Hauteur/2]
        mouseclick("left",$coords[0]+$coords[4],$coords[1]+$coords[3]/2)
    Case "d" ; Clic en [posX+Largeur-Bordure, posY+Hauteur/2]
        mouseclick("left",$coords[0]+$coords[2]-$coords[4],$coords[1]+$coords[3]/2)
    Case Else
        ; Rien
    EndSwitch
Next
Exit
Avec ce script tu n'a plus qu'à travailler sur les valeurs fournies par le tableau $coords (dans l'exemple précédent il prend en charge le bureau en entier avec un décalage de 10pixels).
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
toto06
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 11 juil. 2011 16:29
Status : Hors ligne

Re: [..] Traduire input en mousemove ou click

#12

Message par toto06 »

Merci pour votre soutien sujet resolu
Répondre