Applescript halts at a line and then won't continue (telling a not running app to hide)

So I have a very basic Applescript here that basically hides all my social networking related apps, and then a similar one that unhides them. Problem is that if one of these apps isn't running then the entire thing halts at that line and won't set the ones below that line to hidden either.

Here's the script:

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

Am I doing this the wrong way? Do I have to check to see if each one of these is running first, or is there some way to get it to continue with the script either way?

EDIT: Experiencing the same thing with this script, which I use with an Alfred hotkey to quit specific apps and start the screensaver when I leave work:

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

So basically if iTunes - for instance - isn't running then the screensaver will not start, but the 3 apps before that line will all quit.

Upvotes: 0

Views: 199

Answers (3)

user1804762
user1804762

Reputation:

Hint: with the [Enhanced Application Object Model][1] you can also do things like this:

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

or

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 ]

Upvotes: 1

Harry Butler
Harry Butler

Reputation: 11

You Could use the try command as specified above and use on error do nothing to do it.

Upvotes: 1

adayzdone
adayzdone

Reputation: 11238

You can wrap each statement in a try block so it will fail silently:

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

Upvotes: 1

Related Questions