Applescript - clic souris

iDanGener

.
Club iGen
12 Mars 2011
1 427
366
Bonjour,
Je tente de simuler un clic de souris dans l'écran à la position 50, 500 à l'aide d'un Applescript, avec Monterey sous architecture M1.

Selon ce que je trouve sur le web, il suffirait d'écrire:
tell application "System Events" click at {50, 500} end tell

Pour tester le code, j'ouvre un dossier et je m'arrange pour que la fenêtre couvre toute la moitié gauche de l'écran, puis je clique à l'extérieur de la fenêtre pour qu'elle n'ait plus le focus. Lorsque j'exécute le script, il n'y a pas d'erreur de signalée, mais la fenêtre ne reprend pas le focus.

Une idée de comment on doit procéder?

Note: Je suis avec 2 écrans; par défaut le clic se fera-t-il dans l'écran principal?

Merci par avance de vos lumières.
 
Bonjour,

Le script envoi le click au process qui est en cours, donc si tu as cliqué sur le bureau le click est envoyé sur le bureau.
il faut ajouter un "tell application "XXX" ou un tell process "xxx" et l'activer pour que ton click lui soit envoyé.
 
Dernière édition:
Bonjour,

Le script envoi le click au process qui est en cours, donc si tu as cliqué sur le bureau le click est envoyé sur le bureau.
il faut ajouter un "tell application "XXX" ou un tell process "xxx" et l'activer pour que ton click lui soit envoyé.
Merci pour la réponse.
Je croyais qu'en cliquant le bureau j'activais le process Finder.

J'ai modifié le script qui devient:
Bloc de code:
tell application "System Events"
    tell process "Finder"
        activate
        click at {50, 500}
    end tell
end tell
mais la fenêtre du Finder contenant le point à la position (50,500) ne prend pas le focus (et ça n'amène pas le Finder au premier plan). En ajoutant set frontmost to true
Bloc de code:
tell application "System Events"
    tell process "Finder"
        activate
        set frontmost to true
        click at {50, 500}
    end tell
end tell
le Finder se retrouve bien au premier plan, mais la fenêtre contenant le point à la position (50,500) ne prend toujours pas le focus. Est-ce qu'il faut forcer un «rafraîchissement» de l'affichage?

Note : S'il y avait plusieurs fenêtres superposées dans le Finder, le résultat attendu est de donner le focus à la fenêtre dont la partie qui se trouve à (50,500) est visible.
 
Bonjour,

Quel est le but du script ?
Il serait peut être plus simple de gérer directement la fenêtre au lieu de passer par un clic souris.
si tu connais le nom de la fenêtre en question un simple:
Bloc de code:
tell application "Finder"
    select window "nom de la fenetre"
    activate
end tell
 
Quel est le but du script ?
ll serait peut être plus simple de gérer directement la fenêtre [..]
Bonjour et merci pour cette piste. Mais au départ, je cherchais à simuler un clic d'une souris sur un bouton de l'interface d'une application non scriptable, et dont l'action du bouton ne peut pas être lancée autrement (il n'y a pas d'article de menu pour cette action). Au départ, comme il ne se passait rien avec mon script, j'ai voulu exclure la possibilité que le problème vienne d'une mauvaise position donnée (quelques pixels en trop ou en deçà) en X,Y pour le clic. C'est pour ça que j'ai décidé de passer au Finder en écrivant un script pour cliquer dans la fenêtre d'un dossier ouvert et qui prenait toute la moitié à gauche de l'écran.

Je viens de retenter mon dernier script avec l'application initiale comme process et ça fonctionne (ça fonctionne même en arrière plan, sans le set frontmost to true). Problème initial réglé.

Mais je reste curieux de savoir. Sur OS X, peu importe l'application qui se trouve au premier plan, si on clique à une position quelconque de l'écran, alors l'application qui «possède» l'objet cliqué vient au premier plan. Ne peut-on pas reproduire ce comportement avec un script Applescript?
 
Dernière édition: