2 votes

L'enregistrement d'Applescript supprime les caractères

J'ai écrit un Applescript pour lancer et positionner deux instances d'une application. Le script fonctionne parfaitement bien dans l'éditeur en utilisant ce code :

tell application "App" to activate
tell application "System Events" to tell application process "App"
    set position of window 1 to {8, 22}
end tell
tell application "App 2" to activate
tell application "System Events" to tell application process "App 2"
    set position of window 1 to {914, 22}
end tell

Comme il ne s'agit pas d'une application scriptable, j'utilise les événements système (j'ai également modifié le CFBundleName de la deuxième application, de manière à ce qu'il comprenne les 2 pour différencier les processus). Tout cela fonctionne bien dans l'éditeur lorsque je l'exécute. Cependant, lorsque j'enregistre le script en tant qu'application, il supprime systématiquement le "2" de "App 2" à chaque fois que j'enregistre l'application, même si elle se compile bien. Est-ce que quelqu'un a une idée de la raison pour laquelle cela se produit ; je suis assez nouveau dans Applescript.

1voto

Johnsyweb Points 45395

Vous pouvez éviter le problème à la compilation en choisissant dynamiquement les applications dans les événements du système.

tell application "System Events"
    set App1 to (first process whose name is "App")
    tell App1
        set frontmost to true
        set position of window 1 to {8, 22}
    end tell
end tell

Puis faites de même pour l'App2.

0voto

konqui Points 876

Le principal problème est que l'éditeur de script d'Apple ne connaît aucun des noms "App" ni "App 2", donc si vous exécutez le script, il vous demande de sélectionner l'endroit où l'App est stockée et remplace ensuite "App" par le nom réel de l'application. Cela se produit également pour "App 2".

Ainsi, si vous sélectionnez deux fois la même application (ce qui est ce que vous essayez de faire, selon vos mentions), les noms "App" et "App 2" seront remplacés par le même nom de l'application réelle.

Ou si vous utilisez App comme abréviation pour le nom réel de l'application, il connaît l'application dans la première déclaration mais pas dans la seconde. Il ne demandera donc qu'une seule fois et remplacera simplement "App 2".

Pour faire ce que vous voulez, je vous recommande de changer votre script en quelque chose comme ceci et de l'essayer de cette façon (non testé) :

tell application "<Name of Application>" to activate --open first Window
tell application "<Name of Application>" to activate --open second Window

tell application "System Events" to tell application process "<Name of Application>"
    set position of window 1 to {8, 22}
    set position of window 2 to {914, 22}
end tell

si cela ne fonctionne pas, vous pouvez peut-être adopter ce script qui déplace deux fenêtres ouvertes du Finder côte à côte.

property monitor_width : 980
property monitor_height : 768

set the startup_disk to (path to startup disk)

tell application "Finder" activate
    set visible of (every process whose visible is true and frontmost is false) to false
    -- BOTTOM WINDOW
    set this_window to make new Finder window
    set the target of this_window to the startup_disk
    set the bounds of this_window to {0, (monitor_height * 0.55) div 1, monitor_width, monitor_height}
    set the current view of this_window to column view
    -- TOP WINDOW
    set this_window to make new Finder window
    set the target of this_window to the startup_disk
    set the bounds of this_window to {0, (monitor_height * 0.06) div 1, monitor_width, (monitor_height * 0.53) div 1}
    set the current view of this_window to column view
end tell

Source : http://hints.macworld.com/article.php?story=20011127022706921

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X