Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Technologies Apple _ applescript pour cocher une option des préférences

Écrit par : MacEmbert 22 Mar 2023, 12:23

Bonjour,

Je désirerais scripter un geste que je dois faire plusieurs fois par heure… mais ne suis pas trop versé dans le codage.

Dans une application, je voudrais créer les étapes suivantes:
(dans l'application courante, celle qui est à l'avant-plan)
- raccourci clavier ⌥⌘,
- clic sur onglet "cotations"
- clic sur case à cocher "Placer les cotations…" (pour cocher ou décocher selon que l'état de la case)
- clic sur OK en bas de la fenêtre de dialogue

L'idée est de placer ce script dans BetterTouchTool pour l'appeler via un raccourci clavier.

Merci de votre aide!

https://u.pcloud.link/publink/show?code=XZJnBxVZIIskgVi6tau5HK5I0U5bQR5gmmPk


Écrit par : MacEmbert 22 Mar 2023, 20:30

J'ai essayé ceci

Code
tell application "System Events"
    tell application "Vectorworks" to activate
    keystroke "," using {command down, option down}
end tell
tell application "System Events" to tell process "Vectorworks" to tell window 1
    click checkbox "Placer les cotations dans la classe :" of tab group 2
end tell


Et voici la réponse
error "Erreur dans System Events : Il est impossible d’obtenir tab group 2 of window 1 of process \"Vectorworks\". Index non valable." number -1719 from tab group 2 of window 1 of process "Vectorworks"

Écrit par : PBell 23 Mar 2023, 09:29

Bonjour MacEmbert,
L'erreur provient du fait que tu cherches à atteindre un élément de l'interface qui n'existe pas: checkbox of tab group 2 of window 1

C'est une des difficultés classiques lorsque l'on cherche à simuler l'interface utilisateur. Il se peut que l'application n'ai pas défini les tab dans l'ordre où tu les vois, voir même dans certains cas que tu n'adresses pas la bonne window.
Il se peut aussi que ton script soit trop rapide: tu cherches à utiliser la check box de la window 1, quelques milisecondes (ou secondes !) avant que celle-ci ne soit ouverte par l'application. La première chose à tenter est d'ajouter un délai dans le script entre ton keystroke "," et le "tell window 1".

Si le délai ajouté ne change rien, il faut considérer alors que, bien que la fenêtre soit ouverte, l'élément que tu cherches n'est pas présent !
N'ayant pas Vectorworks, je ne peux t'aider directement, mais je vais t'expliquer comment tu peux chercher le bon UI element (la case à cocher) par itérations sucessives.

1) tu ouvres Vectorworks et sa fenêtre de préférence
2) tu ouvres l'éditeur Applescript. En bas de la fenêtre, tu sélectionnes pour voir les réponses et tu lances le script suivant:

CODE
tell application "Vectorworks" to activate -- set active the last actived application
delay 1
tell application "System Events"
    set B to UI element of window 1 of application process "Vectorworks"    
end tell

(je suppose que ta fenêtre de préférence est bien Window 1 !)

Dans la partie Réponses en bas de fenêtre, tu dois obtenir la liste des IU elements de la fenêtre de préférence.
Il faut que y trouve le tab que tu cherches. Il peut être inclus dans un groupe lui-même.
Une fois que tu l'as trouvé, tu corriges le script ci-dessus pour l'étape suivante.
Par exemple, si tu as trouvé qu'il s'agit de group 1, la ligne de script devient :
CODE
set B to UI element of group 1 of window 1 of application process "Vectorworks"

Tu relances le script et tu verras le contenu du group 1 et ainsi de suite jusqu'à ce que tu trouves ta checkbox !

Bon courage

Écrit par : MacEmbert 23 Mar 2023, 11:37

Merci bcp. Pas trop rôdé à ce domaine, mais je vais me lancer dedans. Merci pour tous les détails en tout cas!! jap.gif

Écrit par : MacEmbert 23 Mar 2023, 12:11

J'y suis presque. drill.gif
Voici le code

Code
tell application "System Events"
    tell application "Vectorworks" to activate
    keystroke "," using {command down, option down}
end tell
delay 1
tell application "System Events"
    click radio button "Cotations" of tab group 1 of window "Préférences document" of application process "Vectorworks"
end tell
tell application "System Events"
    click checkbox "Placer les cotations dans la classe :" of radio button "Cotations" of tab group 1 of window "Préférences document" of application process "Vectorworks"
end tell


Voici le message d'erreur confused5.gif
error "Erreur dans System Events : Il est impossible d’obtenir checkbox \"Placer les cotations dans la classe :\" of radio button \"Cotations\" of tab group 1 of window \"Préférences document\" of application process \"Vectorworks\"." number -1728 from checkbox "Placer les cotations dans la classe :" of radio button "Cotations" of tab group 1 of window "Préférences document" of application process "Vectorworks"

https://u.pcloud.link/publink/show?code=XZ9vDxVZaew1XB8SUmfaJR0UPgGurj9ueBkk

Je précise qu'ajouter un délai avant le dernier bloc tell ne change rien.

Écrit par : ades 23 Mar 2023, 13:34

VW possède son propre éditeur de script (jamais utilisé) et peut-être qu'un script existant répondrait à ta question …

Pas le temps de chercher où les trouver, mais on en trove sur le net (j'ai déjà utilisé des scripts vw, rectif de pers. par ex).

Écrit par : MacEmbert 24 Mar 2023, 20:13

L'idée est bonne mais je ne suis pas développeur, et lorsque j'ai ouvert un manuel de vectorscript j'ai compris que je m'attaquais à trop grand. Quitte à chercher une solution, autant choisir un langage nettement plus répandu et donc plus connu.

Écrit par : PBell 26 Mar 2023, 15:40

Désolé de cette réponse tardive...
Ton message d'erreur est toujours le même: la checkbox que tu cherches à cliquer dans ton script n'existe pas. Soit elle a un autre numéro ou nom, soit, plus probablement, elle n'est pas dans le tab/group que tu références dans ton script.

Je reviens à mon premier message: quand tu lances le premier script que je t'ai proposé, tu obtiens quoi dans la fenêtre réponse de l'éditeur ?

Avec ta réponse, on pourra ensuite, par itérations successives trouver le tab, le group, sub group,...etc qui convient pour adresser le bouton qui t'intéresse.
Encore une fois, n'ayant pas VW, je ne peux pas trouver directement.

Cordialement

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)