Page 1 sur 1

[..] Simulation click de souris sans déplacement

Posté : sam. 31 juil. 2010 18:50
par neo007
Bonjour à tous et à toutes :D

Je cherche un moyen de simuler un clique de souris avec sans déplacer la souris

Merci et bonne journée :)

Re: [AutoIt] Simulation de clique de souris sans déplacement ?

Posté : sam. 31 juil. 2010 20:44
par baconix
Bonjour,

Vous ne précisez pas pour quel genre d'application en tout cas pour internet il y a : _IEAction ($oIE, "click" )

Re: [..] Simulation click de souris sans déplacement

Posté : sam. 31 juil. 2010 22:32
par neo007
N'est-il pas possible de prendre possession de l'objet concerné et de lui envoyer une instruction ?

P.S. Je parle de google chrome

Re: [..] Simulation click de souris sans déplacement

Posté : sam. 31 juil. 2010 22:48
par neo007
ControlClick(...)

Re: [..] Simulation click de souris sans déplacement

Posté : dim. 01 août 2010 19:49
par SrBelial
Exact, il existe deux méthodes pour simuler un clic de souris à un endroit donné sans que la souris ne se déplace :

Si on souhaite cliquer un control bien défini (bouton, champ de texte etc ...) on effectue un ControlClic (cf documentation pour connaitre la signature de la fonction)

Si on ne connait pas de control, par exemple je veux cliquer sur le bureau aux coordonnées 400,600, alors je procède de cette façon :

Code : Tout sélectionner

Dim $origin = MouseGetPos()
MouseClick("left", 400, 600, 1, 0)
MouseMove($origin[0], $origin[1], 0)
explications :
j'enregistre dans une variable la position originale de la souris
j'effectue un mouseclic aux coordonnées voulues, avec une vitesse ayant pour valeur 0 (ce qui fait que la souris se déplace au bon endroit et clique instantanément)
je replace ensuite la souris au bon endroit (avec les coordonnées d'origine et une vitesse = 0 pour retéléporter la souris à sa place d'origine)

voila voila !

[EDIT : rajout de $ à la variable $origin ... merci alex1205 pour la remarque !]

Re: [..] Simulation click de souris sans déplacement

Posté : lun. 02 août 2010 05:32
par neo007
Bon... j'ai fait mon script mais cela m'apporte un gros problème : personne ne peut aller sur l'ordi pendant que mon script fonctionne !

Si je change de session, plus rien ne se passe

Ou encore pire, quand j'utilise un ControclClick, tout fonctionne de travers... j,ai ma fenêtre d'ouverte, ya la commande ControlClick("ma fenêtre", "", "", "left", 1, $posbase[0], $posbase[1]) et elle fait... n'importe quoi sauf ce qu'elle devrait faire, aucun clique n'apparaît dans la fenêtre à l'endroit $posbase; il faut que je fasse un clique dans la fenêtre puis après la commande s'exécute

Je voudrais que mon script puisse fonctionner en «arrière-plan» et que l'on puisse faire tout comme à la normal, est-ce possible ?

merci et bonne journée

Re: [..] Simulation click de souris sans déplacement

Posté : lun. 02 août 2010 09:07
par SrBelial
alors si ton script bloque tout il y a de fortes chances que tu aie inclus dedans une boucle qui tourne en continu sans jamais rendre la main au système ...

si tu as une boucle du style {while 1 ... Wend} ou {for $i = 0 To 2000000 step 1 .... Next}, alors il te faut ajouter un sleep à l'intérieur.
Déjà avec qqch comme sleep(100) ou sleep(250) ça devrait rendre un peu la main aux autres processus.

sinon je vois pas trop quelle autre cause pourrait créer ce problème !

Sinon ton controlclick n'est peut être pas correctement fait.
Déjà vérifie bien avec AutoIT Windows Info Tool (Ctrl + F6 quand tu es dans SciTE) que tu as le bon nom de la fenêtre, éventuellement regarde si il vaudrait pas mieux utiliser la classe de la fenêtre à la place du titre ("[CLASS:Notepad]" par exemple)

Si ta fenêtre est inactive il peut être normal que AutoIT ne parvienne pas à effectuer le controlClic() ... c'est une fonction capricieuse, parfois elle ne trouve pas les controls dans une fenêtre, parfois il faut s'assurer qu'elle est active en utilisant un appel à winactivate() etc ... de la même façon, vérifie que tes coordonnées ne changent pas (en gros retaille ta fenêtre en fullscreen et prend les coordonnées écran par exemple)

et enfin si tu te trouves à cliquer sur un control précis et non juste à des coordonnées dans une fenêtre, cherche avec le AutoIT Window Info Tool pour trouver le nom, la classe, l'instance du control, et fais le controlClic sur lui directement.

dernier point : sur ce genre d'actions, pense que ton script est censé se comporter comme un utilisateur humain ! est ce que toi tu es capable de cliquer à un endroit donné d'une fenêtre donnée lorsque celle ci est réduite ? .... en général non hein ?! ce que fait un humain c'est ouvrir ou activer la fenêtre, cliquer, et re-réduire la fenêtre.

en espérant t'avoir aidé !

Re: [..] Simulation click de souris sans déplacement

Posté : lun. 02 août 2010 10:57
par alex1205
@SrBelial : Pense a mettre $ à origin

Re: [..] Simulation click de souris sans déplacement

Posté : lun. 02 août 2010 11:20
par alex1205
De rien

Re: [..] Simulation click de souris sans déplacement

Posté : lun. 02 août 2010 18:46
par neo007
Bon... je vais essayer ça un peu plus tard et je reviens si j'ai d'autres problèmes :wink:

Re: [..] Simulation click de souris sans déplacement

Posté : mer. 04 août 2010 20:43
par SrBelial
alors, solved or not solved ?

Re: [..] Simulation click de souris sans déplacement

Posté : ven. 06 août 2010 21:39
par neo007
Résolu :D

Re: [..] Simulation click de souris sans déplacement

Posté : sam. 07 août 2010 01:40
par Tlem
Dans ce cas : Sujet résolut = [R] dans le titre de votre premier message.