2017-02-18 5 views
0

Мы опубликовали несколько различных версий приложения. У них похожие названия - Foo Basic, Foo Deluxe, Foo Retro и т. Д. Подобные, но разные идентификаторы связки. (Это была не моя идея!) У некоторых пользователей установлено более одного из этих приложений, но может работать только один.AppleScript: указать запущенное приложение из набора имен кандидатов

Все приложения поддерживают один и тот же словарь AppleScript. Мне нужен AppleScript для написания текущей версии нашего приложения, чтобы делать что-то. Как я могу это сделать?

ответ

0

У меня это работает. Он потребовал несколько штук:

  • Получите имя запущенного приложения. Вы можете сделать это либо processesSystem Events, либо do shell script "ps …", какой бы вы думаете, будет более надежным в вашей ситуации.
  • Затем используя термины из одного из приложений на вашего Mac, вы можете
  • * сказатьприложения APPNAME ..., при условии, что у вас есть
  • сохранил скрипт как Application , поэтому он уже скомпилирован.

Вот несколько кодов. Сценарий, над которым я работаю, еще не прибегал к системным событиям, поэтому, чтобы избавить новых пользователей от боли в поездке в Системные настройки, я решил использовать/bin/ps вместо ...

set appName to runningAppWithBaseName("Foo") 
using terms from application "Foo Deluxe" -- an app on your Mac 
    tell application appName 
     (* whatever code you want here *) 
    end tell 
end using terms from 

on runningAppWithBaseName(baseName) 
    set command to "/bin/ps -eo args | grep " & baseName & " | grep -v grep" 
    (* The "grep -v grep" is to exclude the grep process itself from the results. *) 

    try 
     set fullPathOfRunningApp to do shell script command 
    end try 

    (* Here, given the fullPathOfRunningApp and your list of candidate app names, *) 
    (* insert code to determine the name of the running app. *) 
    return nameOfRunningApp 
end runningAppWithBaseName