2010-04-07 5 views
0

Je veux être en mesure d'exécuter un applescript à partir d'un autre applescript, mais le faire retourner immédiatement.Renvoyer immédiatement à partir de "exécuter le script" dans Applescript

Je ne peux pas utiliser "osascript script.scpt &" parce que l'ospuscule ne permet pas "l'interaction de l'utilisateur" et je veux pouvoir.

Donc, je suis à la recherche pour l'équivalent de: osascript script.scpt & dans "script run script.scpt"


EDIT pour la clarification:

J'ai un objet qui fonctionne NSAppleScript un script - c'est bien, mais je veux lancer le script et revenir immédiatement, en continuant avec le reste du programme Objective C que j'écris.

À l'heure actuelle, le programme OBJC attend jusqu'à ce que l'événement NSAppleScript se termine.

Répondre

0

Probablement la chose la plus facile est d'utiliser NSTask à la fourchette osascript. Si vous pouvez avoir besoin de Mac OS X 10.6, vous pouvez également essayer d'utiliser NSAppleScript dans un thread séparé, mais notez le limitations (cela ne rend pas automatiquement les anciens composants de langage et les ajouts de scripts thread-safe).

0

Une façon de le faire est de s'assurer que le deuxième script est lancé comme sa propre application. Si le second script est statique, compilez-le une seule fois avec l'éditeur de script ou osacompile et lancez-le à partir du premier script. Si vous devez construire le second script à la volée, vous pouvez faire quelque chose aki comme ceci:

osascript - <<EOF 
-- first script ... 
do shell script "osacompile -o /tmp/script2.app -e 'display dialog \"Hello, world!\"'; open /tmp/script2.app" 
-- first script continues ... 
EOF 
+0

problème est que cela lance une icône dans le dock. Existe-t-il un autre moyen de contourner cela sans modifier manuellement l'élément UIElement du plist d'une application TEMP? –

+0

Pas que je sache. Peut-être que si vous en décrivez un peu plus sur ce que vous essayez de faire, quelqu'un pourrait proposer une meilleure solution. –

+0

a publié le post original avec plus d'informations –