0

だから私はここに非常に基本的な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 つのアプリはすべて終了します。

4

3 に答える 3

1

上記のように try コマンドを使用on error do nothingして、それを実行できます。

于 2013-01-06T07:17:46.947 に答える
1

各ステートメントを try ブロックでラップして、サイレントに失敗するようにすることができます。

set myApps to {"iTunes", "1Password"}
repeat with anApp in myApps
    try
        tell application anApp to quit
    end try
end repeat
于 2013-01-02T16:52:15.220 に答える
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

[アプリを起動せずに実行中の場合、AppleScript をチェックインする方法 - osascript ユーティリティを使用]

于 2013-01-04T10:01:49.547 に答える