当我在applescript上打开某个脚本时,为什么其他应用程序会打开?

时间:2014-09-23 22:18:31

标签: applescript

每当我打开这个特定的脚本时,其他应用程序都会打开它,我甚至都没有点击运行。像Appstore和系统信息这样的应用程序打开了,它们只在脚本中提到过一次:

tell application "Grab" to quit
tell application "Network Utility" to quit
tell application "System Information" to quit
tell application "Terminal" to quit
tell application "Keychain Access" to quit
tell application "Disk Utility" to quit
tell application "Bluetooth File Exchange" to quit
tell application "Boot Camp Assistant" to quit
tell application "AirPort Utility" to quit
tell application "Activity Monitor" to quit
tell application "App Store" to quit
tell application "iTunes" to quit

为什么会这样?

3 个答案:

答案 0 :(得分:2)

当您在脚本编辑器中打开脚本时,它将打开所有必需的应用程序以加载其库术语。它一直以这种方式运作。当你打开某人的脚本时,它会特别烦人,这些脚本会告诉您尚未安装的应用程序。

答案 1 :(得分:0)

这不能回答这个问题,因为你已经有了答案。

但是,这是在您想要编辑脚本时不打开这些应用程序的方法。 只需将应用程序名称放在变量中即可。

set appNames to {"Grab", "Network Utility", "System Information", "Terminal", "Keychain Access", "Disk Utility", "Bluetooth File Exchange", "Boot Camp Assistant", "AirPort Utility", "Activity Monitor", "App Store", "iTunes"}
repeat with tName in appNames
    quit application tName
end repeat

答案 2 :(得分:-1)

如果该应用未运行,AppleScript无法告诉应用执行某些操作。因此,如果脚本包含针对特定应用程序的“tell”语句,则该应用程序必须与脚本一起运行。它与在PHP脚本中调用PHP库函数相同。如果在PHP脚本中使用strpos函数,则在没有运行strpos的情况下,该PHP脚本无法运行。

这是设计原因,因为AppleScript的目的是创建包含多个应用程序的工作流程,这些应用程序在特定任务上协同工作。 AppleScript本身几乎没有内置功能 - 您的AppleScripts可以从Mac应用程序,Unix应用程序和网络服务中获取其功能。

在您正在使用的脚本中,如果您知道这些应用程序将无法运行,您可以注释掉这些行(在每行前面放两个破折号),因为它所做的就是告诉那些应用程序退出。 AppleScript没有将这些应用用于任何实际功能。