# applescript, xtool et souris



## two (27 Août 2008)

bonjour 
 je suis en train d'écrire un script qui a comme fonction d'ouvrir un onglet dans safari, charger une page donnée et cliquer sur un bouton sur cette page...
Ceci dans le but but d'activer ce script avec ical une fois par jour
le script marche bien si ce n'est que je n'arrive pas à faire marcher la commande xtool

```
tell application "Safari"
    activate
    tell application "System Events"
        keystroke "t" using command down
    end tell
    set the URL of document 1 to "mon url"
    delay 5
    tell application "System Events" to tell window 1 of process "Safari"
        set {g, h} to position -- Postion de la fenêtre sur l'écran
        set g2 to (g + 120)
        set h2 to (h + 145) -- position ou je veux cliquer
    end tell
    tell application "Xtool"
        move [COLOR=Purple]mouse[/COLOR] {g2, h2}
        mouse click 
    end tell 
end tell
```
j'ai bien créer un dossier "ScriptingAdditions" dans le dossier bibliothèque dans lequel j'ai mis Xtool. J'ai bien dans les dictionnaires de scripts le dictionnaire "Skeleton addition".
mais j'ai beau remplacer -tell application "Xtool"- par -tell application "Skeleton addition"
j'ai une réponse me disant ne pas savoir ou est xtool (ou autre) 
si je ne mets pas le tell application alors c'est la ligne move mouse qui me met une erreur...

Je précise que les quelques scripts que j'ai écrit jusque à présent sontt du copier-coller-assembler de scripts trouvés çà et la ou améliorés grace a l'aide de certains membre du forum... J'avoue ne pas y comprendre énormément 
je fonctionne sous 10.5.4 si cela influence quelque chose...

D'avance merci pour toute piste


----------



## macman31 (27 Août 2008)

Bonjour,
En applescript, la commande "move mouse {x, y}" et "click mouse {x, y} times 1 delay 1 using primary button" existent.
Pour la commande "click mouse", "times 1" désigne le nombre de click, "delay 1" désigne l'intervale en seconde entre chaque click et "using primary button" désigne le boutton avec lequel clicker.

Je ne vois pas pourquoi tu devrais utiliser Xtool pour cela.

En espérant avoir pu t'aider,


----------



## two (27 Août 2008)

macman31 a dit:


> Bonjour,
> En applescript, la commande "move mouse {x, y}" et "click mouse {x, y} times 1 delay 1 using primary button" existent.
> Pour la commande "click mouse", "times 1" désigne le nombre de click, "delay 1" désigne l'intervale en seconde entre chaque click et "using primary button" désigne le boutton avec lequel clicker.
> 
> ...


a mon avis je dois l'utiliser comme un manche car cela ne donne rien... 

```
tell application "Safari"
    activate
    tell application "System Events"
        keystroke "t" using command down
    end tell
    set the URL of document 1 to "mon url"
    delay 5
    tell application "System Events" to tell window 1 of process "Safari"
        set {g, h} to position -- Postion de la fenêtre sur l'écran
        set g2 to (g + 120)
        set h2 to (h + 145) -- position ou je veux cliquer
    end tell
    tell application "System Events"
        click mouse {g2, h2} [COLOR=DarkOrchid]times[/COLOR] 1 delay 1 using primary button        
    end tell
end tell
```
cela me donne un message d'erreur : fin de ligne prévu mais "times" trouvé
je ne sais même pas si cette commande doit être utilisé sous "System events"

edit :  et si je supprime le times 1 delay 1 using primary button...
le message d'erreur devient : erreur dans system events : impossible de poursuivre mouse


----------



## macman31 (28 Août 2008)

Je suis sous Panther, et le script que tu as fait fonctionne parfaitement chez moi.
Je peut même enlever 

tell application "System Events"
end tell

et aussi 

times 1 delay 1 using primary button

et ça marche toujours, sans message d'erreur.


Donc le script suivant marche très bien. Je ne sait pas d'où vient l'erreur.

tell application "Safari"
    activate
    tell application "System Events"
        keystroke "t" using command down
    end tell
    set the URL of document 1 to "mon url"
    delay 5
    tell application "System Events" to tell window 1 of process "Safari"
        set {g, h} to position -- Postion de la fenêtre sur l'écran
        set g2 to (g + 120)
        set h2 to (h + 145) -- position ou je veux cliquer
    end tell
    move mouse {g2, h2}
    click mouse {g2, h2}
end tell


----------



## two (28 Août 2008)

deux possibilités :  soit la syntaxe a évolué dans leopard... soit tu as un "scripting additions" que je n'ai pas....
car chez moi cela me donne toujours un message d'erreur : Erreur dans Safari : {162, 167} ne comprend pas le message move mouse.

ou alors je suis encore plus branque que je ne pensais...


----------



## two (28 Août 2008)

Bon,... j'ai trouvé une différence de syntaxe pour la commande  click. :sleep:

ce code ci ne m'envoie plus de messages d'erreur... mais il n'est pas plus efficace

```
tell application "Safari"
    activate
    tell application "System Events"
        keystroke "t" using command down
    end tell
    delay 0.5
    set the URL of document 1 to "http://www.macg.co/"
    delay 5
    tell application "System Events" to tell window 1 of process "Safari"
        set {g, h} to position -- Postion de la fenêtre sur l'écran
        set g2 to (g + 16)
        set h2 to (h + 13) -- position ou je veux cliquer
    end tell
    tell application "System Events"
        click at {g2, h2}
    end tell
end tell
```
Safari s'ouvre bien (si nécessaire) un nouvel onglet s'ouvre aussi, la page macgénération aussi (pour l'exemple) mais la suite...
pour tester j'ai décidé que pour le moment je cliquerai sur le bouton rouge de la fenêtre , ce qui devrait la fermer et confirmer l'efficacité de la commande mais rien, niks, nothing, nada, nulla... pas de message d'erreur (ouf...) mais pas d'action visible non plus... 
une idée?

quand a la commande move elle semble etre destinée à déplacer un objet ou un disque vers une nouvelle destination... (dixit le dictionnaire system events)


----------



## macman31 (28 Août 2008)

Oulà, je suis vraiment désolé.

En effet, je ne m'était pas souvenu que j'avais installé xtool.osax  dans le passé &#8230;

Voici la syntaxe à utiliser :


```
XTool scripting addition: 

click mouse: 
    click mouse  point  -- where to do the mouse click
        [times  integer]  -- how many times you want to clik the mouse
        [delay  integer]  -- delay between two mouse clicks
        [using  primary button/secondary button/middle button]  -- which mouse button

hide mouse: hide the mouse
    hide mouse

move mouse: move the mouse to given coordinates
    move mouse  point  -- where you want to move the mouse

position of the mouse: get the mouse location
    position of the mouse
    Result:   point

scroll mouse: 
    scroll mouse  integer  -- the amount of scrolling
        [scroll direction  vertical/horizontal]  -- which mouse button

show mouse: show the mouse
    show mouse
```
Par contre, je ne sais pas où le télécharger.
Au pire, je peut t'envoyer ma version d'xtool.

A mon avis, ca ne sert à rien de mettre " tell application xtool ".

Est-ce que "xtool.osax" est bien installé pour toi dans : /Library/ScriptingAdditions ?

Mon script est donc sensé fonctionner avex xtool installé &#8230;

Voilà, mes connaissances s'arrêtent là, et encore désolé.


P.S.: j'ai retrouvé sur mon ordi une image disque d'Xtool 2, si tu la veut, tu peut la télécharger à : 

http://power.up.free.fr/XTool-2.dmg

( c'est sur un vieux site web à moi &#8230


----------



## two (28 Août 2008)

merci de ta patience 
j'avais xtool installé mais en comparant avec la version que tu as uplouadé, je me suis rendu compte que la version que j'avais trouvé sur le web était powerPC et la tienne universal...
J'ai donc remplacé le fichier mais rien y fait... :'(


----------



## ceslinstinct (28 Août 2008)

two a dit:


> merci de ta patience
> j'avais xtool installé mais en comparant avec la version que tu as uplouadé, je me suis rendu compte que la version que j'avais trouvé sur le web était powerPC et la tienne universal...
> J'ai donc remplacé le fichier mais rien y fait... :'(


Bonjour

Une autre version qui chez moi avec Leopard 10.5.4 marche.

*tell* application "Safari"
***activate
***
****tell* application "System Events" *to* keystroke "t" using {command down}
***delay 0.5
****set* *the* URL *of* document 1 *to* "http://www.macg.co/"
***delay 5
***
****set* fenetreSafari *to* bounds *of* window 1
****set* {{g}, {h}} *to* {{item 1 *of* fenetreSafari}, {item 2 *of* fenetreSafari}}
****set* {{g2}, {h2}} *to* {{g + 16}, {h + 13}}
***
****tell* application "Extra Suites" -- Utilise le gestionaire de la souris
******ES move mouse {g2, h2} -- Positionne le curseur pour le clic
******ES click mouse *with* command -- Clic
****end* *tell*
*end* *tell*


Bon j'ai fait le test avec Extra Suites.

http://osaxen.com/files/extrasuites1.1.html

PS: Chez moi quelques commandes de Xtool fonctionnent mais pas celles recherchés.

Il est signalé par le créateur pour Tiger (10$)

ATTENTION: C'est pas un OSAX mais une application donc à placer dans le dossier Applications à la racine du DD.

@+


----------



## two (29 Août 2008)

:'( :'( :'(
ca ne marche pas plus chez moi...
cette fois ci c'est sur le { après ES move mouse que cela coince
avec comme message d'erreur :   « given », « with », « without », autre nom de paramètre, etc. prévu mais « { » trouvé.


j'dois être maudit... :'(


----------



## ceslinstinct (29 Août 2008)

two a dit:


> :'( :'( :'(
> ca ne marche pas plus chez moi...
> cette fois ci c'est sur le { après ES move mouse que cela coince
> avec comme message d'erreur :   « given », « with », « without », autre nom de paramètre, etc. prévu mais « { » trouvé.
> ...


Bonjour

Contrôle si l'application *Extra Suite * est ouverte.

Elle ne parait pas dans le Dock, c'est une application qui travaille en tache de fond.

Un petit script pour simplifier le contrôle.

tu place en commentaire ES move et ES click, teste le script et fait le contrôle avec le code ci-dessous. 


```
tell application "Finder"
	if "Extra Suites" is not in name of (every application process whose file type is "Appl" and visible is false) then
		display dialog "Application Extra Suites non Ouverte"
	else
		display dialog "Application Extra Suites ouverte"
	end if
end tell
```

Il faut ajouter en fin de script ce code pour quitter l'application en fin d'utilisation.


```
ignoring application responses
	tell application "Extra Suites" to quit
end ignoring
```

@+


----------



## two (29 Août 2008)

eh non... extra suite est activé
j'ai rajouté un -       tell application "Extra Suites" to activate        - en début de script
et ton script pour le fermer à la fin 
et les messages d'erreurs restent les mêmes


----------



## ceslinstinct (29 Août 2008)

two a dit:


> eh non... extra suite est activé
> j'ai rajouté un -       tell application "Extra Suites" to activate        - en début de script
> et ton script pour le fermer à la fin
> et les messages d'erreurs restent les mêmes


Le plus simple ce serais que tu te créer une signature avec:
Le type d'ordinateur (PPC ou intel)
Le système utilisé avec le nom du fauve et sa version (bon pour toi c'est Leopard).

Ca permet de voir si l'on peut te répondre si l'on a le même matériel pour faire le test.

Chez moi testé avec l'iMac intel Core 2 duo 2.16 GHz Leopard 10.5.4 et ça fonctionne parfaitement.

PS c'est quoi le point d'interrogation dans un carré bleu?

@+


----------



## two (29 Août 2008)

macbookpro 2.4GHZ core 2 duo...
leopard 10.5.4
je croyais que j'avais mis ces infos dans mon profil utilisateur... (mais c'est vrai que ce n'était pas complet)

Par contre je ne vois pas de quoi tu parle avec "c'est quoi le point d'interrogation dans un carré bleu?"


----------



## ceslinstinct (29 Août 2008)

two a dit:


> macbookpro 2.4GHZ core 2 duo...
> leopard 10.5.4
> je croyais que j'avais mis ces infos dans mon profil utilisateur... (mais c'est vrai que ce n'était pas complet)
> 
> Par contre je ne vois pas de quoi tu parle avec "c'est quoi le point d'interrogation dans un carré bleu?"



Citation:
Envoyé par Ma môman
T'es assez grand pour savoir ce que tu fais...
 et en plein milieu de Citation sous la ligne ci-dessus un carré bleu avec un point d"interrogation blanc (c'est pas une image non reconnue?)

Je vient d'écrire un nouveau code qui marche aussi sur mon iMac (il utilise aucunes applications non fournies avec le système).

Il est réglé pour créer un nouvel onglet et éliminer le premier onglet de Safari (c'est à toi d'indiquer la position ou cliquer pour ton script).


```
tell application "Safari"
	activate
	
	tell application "System Events" to keystroke "t" using {command down}
	delay 0.5
	set the URL of document 1 to "http://www.macg.co/"
	delay 0.5
	
	set fenetreSafari to bounds of window 1
	set {{g}, {h}} to {{(item 1 of fenetreSafari) + 18}, {(item 2 of fenetreSafari) + 87}}
	
	activate application "Finder"
	tell application "System Events" to tell process "Safari" to click at {g, h}
end tell
```

Cela ferais plaisir a notre ami *macman31* que dans ton premier post au titre tu écrive *Résolu*.

@+


----------



## two (31 Août 2008)

Super, ca marche ! Merci a vous 2 ceslinstinct et macman31
  

pour le carré bleu et le point d'interrogation je n'ai rien... mais je vais veiller à voir qu'il n'y ait plus rien de tel dans ma signature

Pour ce qui es de changer le titre d'une discussion... je croyais que cela ne pouvait se faire que dans les 3 heures après l'émission du premier post...


----------

