AppleScript:从一组候选名称告诉运行应用程序

时间:2017-02-18 05:47:51

标签: process applescript running-other-programs

我们已经发布了几个不同版本的应用。它们具有相似的名称 - Foo Basic Foo Deluxe Foo Retro 等。类似但不同的包标识符也是如此。 (这不是我的想法!)有些用户安装了多个这样的应用程序,但只有一个可以运行。

所有应用都支持相同的AppleScript字典。我需要AppleScript来编写我们应用程序当前运行版本的脚本。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。它需要几件:

  • 获取正在运行的应用的名称。您可以使用processes System Eventsdo shell script "ps …"执行此操作,无论您认为哪种情况在您的情况下更可靠。
  • 然后,使用 Mac上的某个应用中的条款,您可以
  • *告诉 应用程序 appName ...,只要您有
  • 将您的脚本保存为应用程序,因此已经编译。

这是一些代码。我正在处理的脚本还没有使用系统事件,所以为了让新用户免去系统首选项的麻烦,我选择使用/ 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