"set value of text field" qui ne fonctionne pas

gvibrac

Membre confirmé
14 Janvier 2005
45
1
49
Bonjour,

J'ai un probléme avec un script, je n'ai pas d'erreur proprement parlé, mais la ligne ne s'excute pas, voici un extrait de mon code :

Bloc de code:
Tell application "System Events"
Tell process "AppleWorks 6"
	 keystroke "p" with command down
	 click button "Enreg. comme PDF..." of UI Element 5 of window "Imprimer"
	 Tell window "Enregistrer dans fichier"
		 set value of text field 1 to "toto.pdf"
		 click button "Enregistrer"
	 end tell
end tell
end tell

Tout se déroule comme prévu (ouverture des fenetres, clic des boutons) à part le "set value" est ce que ce n'est pas un text field ? Est ce que je dois mettre un tell quelque chose de plus ?

J'ai essayé aussi "set the contents of..." mais aussi "set contents of ..." mais ça ne marche pas non plus (là j'ai vraiment une erreur...)

J'ai essayé de changer de methode en utilisant keystroke, là ça me rempli bien mon champs texte, mais les "i" de ma chaine, sont remplacés des "q"... étrange

Je suis sous MacOS 10.3.7

Merci pour votre aide

Geoffroy
 
gvibrac a dit:
Bonjour,

J'ai un probléme avec un script, je n'ai pas d'erreur proprement parlé, mais la ligne ne s'excute pas, voici un extrait de mon code :


Tout se déroule comme prévu (ouverture des fenetres, clic des boutons) à part le "set value" est ce que ce n'est pas un text field ? Est ce que je dois mettre un tell quelque chose de plus ?

J'ai essayé aussi "set the contents of..." mais aussi "set contents of ..." mais ça ne marche pas non plus (là j'ai vraiment une erreur...)

J'ai essayé de changer de methode en utilisant keystroke, là ça me rempli bien mon champs texte, mais les "i" de ma chaine, sont remplacés des "q"... étrange

Bonjour

J'ai fait le test d'imprimer les caractères du clavier Francais avec Keystroke et beaucoups d'erreurs de caractères.
Même test avec le caractères du clavier américain 1 erreur donc j'en déduit que les commandes Keystroke ne sont utilisées surtout que pour les racourcits clavier de la barre des menus qui ne sont jamais traduit.

A tu assayé d'écrire dans Appleworks ton texte dans une boucle tell application "Finder" qui pour moi est plus normal.
Keystroke ne marche pas dans une telle boucle.

Une simple idée, j'ai pas testé.

@+
 
ceslinstinct a dit:
A tu assayé d'écrire dans Appleworks ton texte dans une boucle tell application "Finder" qui pour moi est plus normal. Keystroke ne marche pas dans une telle boucle.

Je ne suis pas sur de bien comprendre ...

J'ai fait la même constatation avec Keystroke, c'est pour ça que je préfère le set value of text field to... mais ça ne fonctionne pas chez moi

Merci pour ton aide
 
Bonjour, et merci pour ton aide,

Y'aurait-il un pré requis à l'utilisation d'applescript que j'aurais zappé ? Un truc évident qu'un newbie sous mac n'a pas fait : Un "pack" à installer... ou autre chose à faire... je m'explique :
J'utilise l'editeur de script 2.0 sous Mac Os 10.3.8, dans ton script, il me refuse :
keystroke "p" using command down, mais keystroke "p" with command down fonctionne
Il me refuse :
key code {17 ... pour une erreur de syntaxe (fin de ligne prévu mais trouvé identificateur.)

je ne comprend pas, avec le set value of text field qui ne fontionne pas non plus, je me demande si il ne me manque pas quelque chose !

Merci beaucoup

Geoffroy
 
gvibrac a dit:
Y'aurait-il un pré requis à l'utilisation d'applescript que j'aurais zappé ? Un truc évident qu'un newbie sous mac n'a pas fait : Un "pack" à installer... ou autre chose à faire... je m'explique :
J'utilise l'editeur de script 2.0 sous Mac Os 10.3.8, dans ton script, il me refuse :
keystroke "p" using command down, mais keystroke "p" with command down fonctionne
Il me refuse :
key code {17 ... pour une erreur de syntaxe (fin de ligne prévu mais trouvé identificateur.)

je ne comprend pas, avec le set value of text field qui ne fontionne pas non plus, je me demande si il ne me manque pas quelque chose !

Tout d'abord, je te conseille de vérifier que l'application "System Events" (version 1.2.1) est bien installée dans le dossier "CoreServices" de la Bibliothèque du Système.

Ensuite, il est important de comprendre le principe du fonctionnement du pilotage d'interface sous Mac OS X. Ce principe est le suivant : "Je demande à l'application "System Events" d'appliquer tel ou tel événement (clic, raccourci clavier, etc.) à telle partie de l'interface d'une application située au premier plan." Si ton script n'invoque pas "System Events", les commandes "keystroke" et "key code" ne fonctionneront pas. La démarche doit toujours être la même. Ainsi, pour piloter l'interface de "Safari", on écrira :

activate application "Safari"
tell application "System Events"
tell application process "Safari"
-- Liste des commandes à exécuter (keystroke, key code, click, etc.)​
end tell​
end tell
 
Merci encore !

En fait j'ai 2 fichiers dans CoreServices répondants au nom de system Events : "System Events" (version 1.2) et "System Events 1.1.1.app" (Version 1.2.1)

Ce que je trouve etrange c'est que certaines fonctions marchent parfaitement (keystroke, click button, tell UI element...) et d'autres ne fonctionnent pas (key code, set value, ...)

Geoffroy
 
gvibrac a dit:
En fait j'ai 2 fichiers dans CoreServices répondants au nom de system Events : "System Events" (version 1.2) et "System Events 1.1.1.app" (Version 1.2.1)

Tu n'aurais pas installé la version bêta des Developer Tools par hasard ?
Quoi qu'il en soit, la version 1.2.1 est, semble-t-il, la plus récente. Assure-toi de n'avoir que celle-là dans tes "CoreServices" et que son nom soit bien "System Events.app" (l'extension ".app" n'est pas visible, mais elle y est bel et bien). Cela devrait résoudre tes problèmes.
 
Et bien, en net progres... j'ai modifier le dossier pour supprimer le fichier 1.2 et ne laisser que le 1.2.1 en le renomant, et déjà ça marche mieux !
Le set value of text field ça ne marche toujours pas mais key code si !!

Merci encore pour ton aide, j'aurais pu chercher des plombes !! J'ai du faire une install barbare sans m'en rendre compte !

Geoffroy