Je lance cette bouteille à la mer parce que je ne m’en sors pas.
Je suis sur un MacBook Pro de 2014 OS 10.13.6
J’utilise sheepshaver pour émuler OS 9.0.4 pour utiliser une application (limelight) et notamment sa fonction d’importation qui est scriptable, c’est à dire qu’applescript sait la déclencher.
Le bout de script qui m’intéresse bien et qui marche, est le suivant :
tell application "Finder" to set outfile to "MacOS9:Desktop Folder:fichierdesortie"
tell application "Finder" to set aFile to "Unix:titi:Tititext:Fichier_01.Text"
tell application "LimeLight_P"
activate
import file aFile to file outfile
end tell
Et voilà le gros « MAIS » qui me bloque complètement.
La fonction d’import ouvre une boite de dialogue et je dois cliquer sur « OK » (elle est émise par limelight, je ne peux rien y changer).
Je voudrais que le script valide lui-même ce OK (ce sera toujours la bonne réponse à la boite de dialogue).
J'ai fouillé la toile, j'ai la vague impression que quickeys pourrait m'aider...
J'ai aussi compris que sur OSX c'est assez simple (il suffit de passer par system event) mais ça n'existe pas sur OS9...
Donc je suis largué (et pas très doué).
Alors je me dis qu'avec un peu de chance il y a ici quelqu'un pour qui c'est super facile...
Bonjour et bienvenue !
Tu ne peux pas utiliser une commande comme ceci ?
Chic une réponse !
click button "OK"
donne une erreur de syntaxe à la compilation.
("Exected end of line, etc. but found identifier.")
j'ai donc supposé que ça ne marche pas sur OS9. Aurais-je faux ?
sur OSX, la solution serait :tell application "System Events"
key code 36
end tell
Comme disent les Anglais, la preuve est dans le pudding. Je ne suis pas en mesure de tester la commande mais si tu dis que ça ne marche pas…
Et en enregistrant cette séquence ?
Il me semble que c'etait possible aussi avec OS9.
Là tu chope ce qui se passe et tu l'intègres à ta sauce
oui, j'ai bien commencé comme ça.
J'ai tout simplement enregistré la séquence.
Mais l'action "OK" n'a pas été restituée dans le script.
Je remarque par contre que si "click button" ne passe pas à la compilation, "click at" et "click on" sont acceptés.
Pour utiliser "click at", il me faut les coordonnées du bouton dans la fenêtre et si "click on" est bien l'ancienne version de "click button", alors il me reste à trouver le moyen de lui désigner correctement le nom du bouton.
Mais là encore, je trouve des solutions pour faire ça avec OSX (UIElementInspector, ). Sur OS9, je ne trouve rien.
Peut-être :
Quelques suggestions de la part d'un membre discret :
Alors déjà, que Zeltron54 soit remercié pour avoir écrit « j’ai oublié ».
Ça me donne espoir, car j’en venais à douter que mon problème ait une solution.
Je peux continuer à chercher en me disant que la solution existe et qu’elle est probablement toute simple…
Je note aussi cette remarque : « A vérifier si dans le dictionnaire d'applescript pour os 9 il existe bien le (system events) ou éventuellement sous un autre nom ! »
J’ai cherché pendant des heures une réponse à cette question. Sur mon système rien ne s’appelle « system event » et j’ai cherché dans tout ce qui semble scriptable en vain. Sur internet, je n’ai pas trouvé ce qui pouvait remplacer « system event » sur OS9.
J’ai eu espoir avec le dictionnaire du finder, mais je ne comprend pas grand chose à la mine d’informations qu’il contient. En tout cas, pas de click, return ou keystroke...
Les exemples de l'aide applescript ne traitent pas non plus la question...
J’ai simplifié le problème pour être certain de ne pas être pollué par mon appli.
Je test les solutions sur une boite de dialogue basique :
Lorsque je testedisplay dialog "Hello" buttons {"Cancel", "OK"} default button "OK"
tell front window
return
end tell
La boite de dialogue s’affiche et attend que l’utilisateur la valide.
Intuitivement, ce n’est pas surprenant… comment dire au script de lire la ligne suivante avant que la boite de dialogue n’ait été franchie ?
Bonjour, JB7
Pour reprendre ton exemple, afin que le programme continu il faut ajouter : giving up after délai
ce qui donne pour un délai d'une seconde.
Je ne sais pas si en faisant ainsi le bouton OK est validé, mais l'instruction "return" n'est pas opérante puisque la boite de dialogue s'est en fait auto-validée avant que la ligne return soit atteinte.
Quoi qu'il en soit, ce n'est pas transposable à mon problème. J'ai essayé au cas où, mais "giving up after" ne peut pas être ajouté à mon instruction d'import.
Alors, désolé
Ne pouvant pas tester (pas de mac sous os9), je ne sais même pas si cette fonction était disponible sous cet OS.
Peut être qu'un autre membre du forum pourra t'aider, je pense entre autre à PBell ...
PBell m'a dit que lui non plus n'avait plus assez de souvenirs de Mac OS9, ni de machine tournant avec…
Je pense que JB7 va être contraint d'abandonner l'idée de vouloir valider cette demande et chercher une solution pour éviter qu'elle apparaisse.
Voir dans le dictionnaire de l'appli, si lors de l'appel d' import, en précisant le fichier à importer, si on peut éviter cette demande de validation.
Mais utiliser de nos jour OS 9, qui à plus de 25 ans, est-ce bien raisonnable ? et n'existe t'il pas un logiciel sous mac OS X qui ferait le job ?
Bon courage .
display dialog "Hello" buttons {"Cancel", "OK"} default button "OK"
tell front window
return
end tell
il me semble que enter est plus juste que return parce que j'ai vu par ailleurs que return sert à autre chose (retourner un résultat).
Je veux dire que la ligne de script enter n'est lue que après validation manuelle de la boite de dialogue.
il manque surement une instruction...
Je pense plutôt que c'est la demande qui attend la confirmation.
Il faudrait pouvoir reformuler le
"display dialog "Hello" buttons {"Cancel", "OK"} default button "OK" giving up after 1" qui demande cette confirmation
Tu as raison, ça marche.
Le Giving up ne renvoie aucun résultat, mais ce n'est pas grave.
La solution (c'est pas de moi, j'ai trouvé sur la toile en cherchant "giving up") consiste à exploiter l'information du non retour de résultat par un test pour décréter le résultat.
Ça donne :display dialog "Hello" buttons {"Cancel", "OK"} default button 2 giving up after 3
if the button returned of the result is not "Cancel" then
return "OK"
else
return "Cancel"
end if
Et ça marche sur OS9
Malheureusement pour moi, giving up marche ici en tant que complément de display dialog.
Mais dans mon cas réel, je n'écrit pas moi-même la boite de dialogue.
Je ne peux donc pas utiliser cette solution.
Donc bon tuyau, mais qui ne me sauve pas le match.
Dans :
J'ai essayé les trucs du genre.
Pour résumer, tant que la boite de dialogue n'est pas validée manuellement, la ligne suivante dans le script ne s'opère pas.
Excepté en effet en utilisant giving up, mais ça ne vaut que si le script créée la boite de dialogue.
Ton conseil d'essayer avec hypercard... pourquoi pas vu mon incompétence en applescript.
En fait, je ne connais d'hypercard que le nom (une démo vue quand c'était nouveau !), mais si c'est beaucoup plus simple, je peux être gagnant.
De tes souvenirs, l'ensemble de mes taches, c'est
- j'indique un dossier
- pour chaque fichier contenu dans ce dossier, limelight importe ce fichier (en validant au passage la touche "ok" qui est la touche par défaut) et enregistre le résultat. Sans aucune intervention utilisateur.
Ça ne va pas chercher plus loin, ça te semble dans les corde d'hypercard ?
HyperCard était très puissant, avec ou sans AppleScript
Le seul souci sera de retrouver tous les cours de ??? je ne me souviens pas de son nom.
Je sais que c'était le frère ou le beau frère d'une nana que je connaissait et qu'il était établi à Longvic à côté de Dijon
Je dois avoir ça sur des CD de sauvegarde, mais il faut lancer un OS9 pour retrouver le programme de gestion des sauvegardes…
Bref, peut être à partir d'octobre où je devrais avoir un peu plus de temps
Hypercard, en effet, c'est déroutant à quel point c'est ouvert.
Dans la même époque, il y a Resedit.
Je me disais que si j'arrive à trouver la boite de dialogue utilisée par Limelight, il y a peut-être moyen de lui coller un équivalent de 'giving up' ?
Bon, dans le manuel de resedit, cette possibilité ne saute pas aux yeux...
Bonjour,
Peut être une solution possible ici.
https://apple.stackexchange.com/questions/328673/applescript-how-to-identify-buttons-and-press-them
a défaut des piles d'Eric Chatonnet, j'ai retrouvé quelques piles explicatives : https://www.myqnapcloud.com/smartshare/777h5i974l6p7024v3931b17_6KEXQHq
Bonjour,
@eten, la transposition sur OS9 privé de System Events coupe l'herbe sous le pied à cette solution.
Mais je vais essayer de la faire fonctionner sur un système plus récent, ça m'aidera peut-être à comprendre.
@ch21, je télécharge et je vais essayer.
merci !
Bon, avec ce WE pourri j'ai cherché un peu dans mes archives.
Heureusement que mon Starmax fonctionne toujours, TriCatalog plante SheepShaver !
Bref, j'ai trouvé le sommaire des piles d'Eric Chatonnet et je n'ai rien trouvé qui puisse aider.
En revanche j'ai aussi retrouvé les guides applescript de l'époque.
Ca pourra peut être t'aider ?
https://www.myqnapcloud.com/smartshare/777h5i974l6p7024v3931b17_6kU32Oh
Alors...
Hypercard, ce qui est super, c'est que une fois qu'on se familiarise avec la navigation par piles et qu'on contrôle ses réflexes d'usage de la souris, on découvre rapidement les infos de base sur les scripts. Sinon, a moins que j'ai raté quelque chose, c'est uniquement la partie script d'hypercard que qui me serait utile, et c'est juste une version primitive d'applescript, non ?
En tout cas, il y a une version qui m'a semblé assez complète sur
https://www.macintoshrepository.org/2632-hypercard-2-4
J'ai chargé la doc complète applescript.
Très utile, largement supérieure à ce que j'avais récupéré.
J'ai beaucoup transpiré...
J'ai déjà songé à des plans B pour me passer de la solution, mais c'est tellement agaçant d'voir le sentiment d'en être à trois lignes près !
Maintenant, mon inquiétude a changé de forme.
Mon bout de script s'écrit :
tell application "LimeLight_P"
ignoring application responses
import file "Unix:_atelier:Xiaochuidong.Tab" to file "MacOS9:Desktop Folder:a_01"
end ignoring
close
end tell
(edité pour élaguer le château de cartes sans le faire tomber)
Et il donne des résultats surprenants.
La question de la touche return ou du click est résolue !, c'est déjà ça.
Je ne sais toujours pas faire de return ou de click là où il faut, mais je sais passer le dialogue d’importation sans avoir à le faire (une chance, les options par défaut sont celles qu'il me faut).
Par contre, l'import réalise des prouesses que je ne sais pas faire manuellement: importer en effaçant les données présentes et, vraiment plus surprenant, il a réussit à importer sans effacer un très grand nombre de fichiers sans que je n'ai changé quoi que ce soit au script (et en un temps éclair) !
Donc problème résolu (encore merci), mais je ne suis pas sortis du bois car si je script, c'est pour palier aux erreurs humaines... il faut donc aussi que je sache ce qui se passe !
En tout cas merci
Bravo, ça fait plaisir !!!
Maintenant que tu en es là, tu peux aller faire un tour dans le forum spécialisé pour tes interrogations https://forum.macbidouille.com/index.php?showforum=39
Je suis quasiment arrivé à mon résultat final !
oui, plusieurs jour pour trouver ceci : set x to x as alias
qui était nécessaire dans mon cas pour faire marcher dans une boucle ce qui marchait unitairement.
Pour ceux qui tomberaient sur ce fil et seraient aussi débutants que moi.
Mes conclusions :
- les causes de mon problème n'avait strictement rien à voir avec ma version de systeme et l'absence de system event.
(Les instructions en click, keycode, return etc sons simplement inutiles pour passer outre une boite de dialogue.)
- lors de mes essais, j'ai perdu beaucoup de temps à chercher à résoudre des problèmes inexistants, comme typiquement une boite de dialogue non fermée cachée derrière un farta de fenêtres inutiles.
-il n'y a pratiquement pas de chance qu'un problème soit insoluble ou non contournable avec ce qui est présent dans le guide.
Donc le titre que j'avais donné à mon fil avait tout faux !
Tu parles de quel guide ?
Le guide applescript que tu as mis en ligne ici
https://forum.macbidouille.com/index.php?showtopic=426778&view=findpost&p=4450363
Ah, ben content qu'il puisse encore servir à quelqu'un ce guide
Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)