AppleScriptで起動アプリをチェックする方法

AppleScriptで特定のアプリケーションが立ち上がっているかどうかチェックしたいと思い、次のようなスクリプトを書きましたが
うまく行きません。
(* Terminalが起動しているかどうかのチェック *)
tell application "Finder" to set aList to name of every application process
if "Terminal" is in aList then
display dialog "Terminal is currently running." with icon note
else
display dialog "Terminal is not running." with icon stop
end if
aList --リストのチェック
Terminalを起動してから上記のスクリプトを実行させると、結果ウィンドウの中には次のように"Terminal"があるのですが、
{"loginwindow", "Finder", "Dock", "SystemUIServer", "iTunesHelper", "System Preferences", "System Events", "Terminal", "Engine", "Script Editor", "Internet Explorer"}
if文の結果がfalseになってしまいます。
このリストを取り出して次のようなスクリプトを実行すると
当然結果はtrueになっています。
"Terminal" is in {"loginwindow", "Finder", "Dock", "SystemUIServer", "iTunesHelper", "System Preferences", "System Events", "Terminal", "Engine", "Script Editor", "Internet Explorer"}
ここで行き詰まってしまいました。お分かりになる方、ご指南ください。

投稿日 2002/03/09 04:50

返信
返信: 1
並べ替え順: 

2002/03/11 19:45 Community User への返信

Terminalが起動しているかどうかを調べるなら、以下のようなスクリプトで可能です。
tell application "Finder"
activate
name of every process whose visible is true and name is "Terminal"
if the result as Unicode text is "Terminal" as Unicode text then
display dialog "ターミナルは起動しています"
end if
end tell
 理由は分かりませんが、プロセスを調べた結果は普通の文字列ではないようです。結果ウィンドウに表示される名前のリストは、Script Editor上でダブルクォートでくくったstring型の文字列と比較しても結果はfalseになってしまいます。
 用語説明を見るとUnicode text型ですが、これでもないようです。ですから、受け取った結果を一度Unicode text型に変換してから比較します。このとき比較の対象文字列も同じUnicode text型に変換しておきます。
 Mac OS Xでは、アプリケーションから受け取った結果の文字列を比較するとき上記のような現象がよく起きます。こういうとき、比較する方も比較される方もUnicode text型に変換してみると上手く行くことがあります。ちなみに、この現象はCocoaアプリケーションで起きます。
 以上で、参考になったでしょうか。

返信

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

AppleScriptで起動アプリをチェックする方法

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。