System Events を介してアプリケーションが起動しているか判定するのに、アプリケーション名の使い方でおかしなことになる。 exists (application processes whose name istheTargetApp)
とするなら、
theTargetApp が "テキストエディット" … ×
theTargetApp が "TextEdit.app" … ×
theTargetApp が "TextEdit" … ○
アプリ名を choose file with prompt "Select target application"
of type {"APPL"} without invisibles
で選択して、theStr という変数に格納するなら、 settheStrto short name of (info for the result)
とする。
ちなみに、「テキストエディット」なら displayed name、「TextEdit.app」なら name で OK。
これは Xcode ではなく、AppleScript の仕様だけど。
short name がないアプリはどうする?
上記の choose file ~ で short name を得ようとすると、結果が <null> になるアプリケーションが存在します。(iCal など)
自作アプリの場合は、Info.plist を PropertyList Editor で開いて「CFBundleName」を追加、value を「ProcessSpy」などとすれば、それが short name になります。
自作でないアプリケーションも、この方法で short name を埋め込むことはできるけど… display dialog "" default answer "" buttons {"Cancel", "OK"} default button 2
として、タイプしてもらうほうがユーザーフレンドリーかな。
display dialog の結果が逆?
スクリプトエディタで上記の text input ダイアログを表示した場合、つづけて copy the result as list to {text_returned, button_pressed}
として、入力されたテキストを変数 text_returned に、押されたボタンを button_pressed に格納するのが常套手段だけど、これを Xcode 上の AppleScript でやると、なぜか text_returned に「OK」が、button_pressed に「iCal」が入ってしまうという謎。 copy the result as list to {button_pressed, text_returned}
としときましょう。