Page 1 sur 1

[R] Traduire input en mousemove ou click

Posté : mar. 12 juil. 2011 15:57
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

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

Posté : mar. 12 juil. 2011 16:23
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:

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

Posté : mar. 12 juil. 2011 17:04
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

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

Posté : mar. 12 juil. 2011 17:34
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:

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

Posté : mar. 12 juil. 2011 17:53
par toto06
Merci TT22 ;)

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

Posté : mar. 12 juil. 2011 18:09
par TT22
Mais de rien :mrgreen:

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

Posté : mar. 12 juil. 2011 22:10
par Tlem
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.

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

Posté : mer. 13 juil. 2011 03:14
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

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

Posté : mer. 13 juil. 2011 13:31
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

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

Posté : mer. 13 juil. 2011 14:36
par toto06
j'ai supprimé
"If $tour = $ligne then ExitLoop" mais le problème persiste :(

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

Posté : mer. 13 juil. 2011 15:00
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).

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

Posté : mer. 13 juil. 2011 16:58
par toto06
Merci pour votre soutien sujet resolu