我想这样做:
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
这不起作用,因为“使用from 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是在运行时编译的?
答案 0 :(得分: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