Forcer une application pour exécuter l'une de ses options de menu à partir d'un script shell?
Question
Y at-il moyen de forcer l'application d'exécuter l'un de ses options de menu s'il n'y a pas une interface ligne de commande disponible?
Peut-être une sorte d'automatisation de chose?
Exemple
Je voudrais lancer la commande « Fichier> Exporter les flux » de NewsFire pour sauvegarder la liste des flux (fichier OPML). J'ai essayé de courir NewsFire par le terminal avec « --help », mais pas de chance.
Voici le script de sauvegarde que j'utilise actuellement, au cas où quelqu'un trouve utile. Il peut être utilisé pour sauvegarder et restaurer l'état de plusieurs machines de Newsfire (pour vous restaurer juste cd ~
, puis unzip backup.zip
).
#! /bin/bash
#
# Backup NewsFire preferences, feeds and cache (everything)
#
D_DESTFILE=~/Backups/Config/NewsFire.zip
# Don't update archive, create new one
if [ -e "$D_DESTFILE" ]; then
rm $D_DESTFILE
fi
cd ~
zip -r $D_DESTFILE Library/Application\ Support/NewsFire Library/Caches/org.xlife.NewsFire Library/Preferences/org.xlife.NewsFire.plist
La solution
Ceci est un début d'un AppleScript pour faire l'exportation:
set filename to "test file"
tell application "NetNewsWire" to activate
tell application "System Events"
tell process "NetNewsWire"
click menu item "Export Subscriptions…" of menu "File" of menu bar 1
set value of first text field of first sheet of first window to filename
click button "Save" of first sheet of first window
end tell
end tell
tell application "NetNewsWire" to quit
Il enregistre le fichier exporté avec le nom du fichier de jeu à l'endroit qui a été utilisé la dernière fois à faire l'exportation. Il ne sera pas écraser un fichier existant actuellement, vous pouvez alors peut-être enregistrer dans un endroit temporaire et se déplacer avec un script séparé.
Remarque : Ma copie de NetNewsWire avait la commande de menu « Abonnements Exporter ... », pas « Flux d'exportation », mais si le vôtre est différent, il suffit de changer le nom de l'élément de menu en ligne 6.
Modifier pour ajouter :. Vous devez aussi avoir « Activer l'accès pour les périphériques d'aide » dans le panneau de préférences d'accès universel système Actives pour que cela fonctionne