0

我想这样做:

tell application "Finder" to set appName to (application file id "com.google.Chrome") as text
using terms from application appName
    tell application appName to get URL of active tab of first window
end using terms from

这不起作用,因为“使用术语来自”需要应用程序名称作为字符串常量。如果我替换这一行:

using terms from application appName

有了这个

using terms from application "Google Chrome"

有用。但是我不想依赖具有名为“Google Chrome”的应用程序的目标机器。使用捆绑标识符似乎更安全。有一个更好的方法吗?

编辑

按照@regulus6633 的建议,我尝试了以下方法:

NSAppleScript* script = [[NSAppleScript alloc] initWithSource:
    @"tell application \"Finder\" to set appName to (application file id \"com.google.Chrome\") as text"
    @"\nusing terms from application \"Google Chrome\""
    @"\ntell application appName to get URL of active tab of first window"
    @"\nend using terms from"];

效果很好,但是如果我在“Google Chrome”重命名为“Chrome”的另一台计算机上运行相同的(编译的)应用程序,我会弹出一个对话框,询问“Google Chrome”在哪里。好像 NSAppleScript 是在运行时编译的?

4

1 回答 1

2

您误解了“使用条款”的作用。这是一种让您使用应用程序在您的计算机上编译脚本然后无需在用户计算机上重新编译脚本的方法。换句话说,一旦你用那行代码在你的计算机上编译,那么那行代码在用户的计算机上什么都不做,因此用户不需要你用来编译脚本的应用程序......所以那行是正是你要找的。确保将您的脚本保存为“应用程序”,这样就不需要在用户的计算机上重新编译它。

这就是您真正希望您的代码看起来像的样子:

-- here you determine what the user's browser is
set usersBrowser to "whatever"

using terms from application "Google Chrome"
    tell application usersBrowser
        -- here you do something in the user's browser
        -- you have to make sure that whatever command you use is applicable to both google chrome and whatever browser the user is using i.e. the command must work in both browsers
    end tell
end using terms from
于 2011-01-06T05:41:43.883 回答