Applescript在一行停止然后不会继续(告诉正在运行的应用程序隐藏)

时间:2013-01-02 16:35:46

标签: macos applescript

所以我在这里有一个非常基本的Applescript,它基本上隐藏了我所有与社交网络相关的应用程序,然后是一个隐藏它们的类似应用程序。问题是,如果其中一个应用程序没有运行,那么整个事情就会在该行停止,并且不会将该行下面的那些设置为隐藏。

这是脚本:

tell application "System Events" to set visible of process "Twitter" to false
tell application "System Events" to set visible of process "Wedge" to false
tell application "System Events" to set visible of process "Facebook" to false
tell application "System Events" to set visible of process "Adium" to false
tell application "System Events" to set visible of process "Messages" to false

我这样做是错误的吗?我是否必须检查这些中的每一个是否先运行,或者是否有某种方法可以让它继续使用该脚本?

编辑:使用这个脚本体验相同的东西,我使用Alfred热键退出特定应用程序并在我下班时启动屏幕保护程序:

tell application "Adium" to quit
tell application "Messages" to quit
tell application "1Password" to quit
tell application "iTunes" to quit
tell application "ScreenSaverEngine" to activate

所以基本上如果iTunes没有运行,那么屏幕保护程序将无法启动,但该行之前的3个应用程序都将退出。

3 个答案:

答案 0 :(得分:1)

您可以将每个语句包装在try块中,这样它就会无声地失败:

set myApps to {"iTunes", "1Password"}
repeat with anApp in myApps
    try
        tell application anApp to quit
    end try
end repeat

答案 1 :(得分:1)

提示:使用[增强的应用程序对象模型] [1],您还可以执行以下操作:

if application "iTunes" is running then
    tell application "iTunes" to quit
end if

tell application "iTunes"
    if it is running then
        pause
    end if
end tell

[How to check in AppleScript if an app is running, without launching it - via osascript utility]

答案 2 :(得分:1)

您可以使用上面指定的try命令并使用on error do nothing来执行此操作。