自分の場合はGUIScriptingしか出来ませんので、タイミングの調整はdelayで行います。
しかし、そのdelayの場合には重量級のソフトを起動させる場合には起動までの時間が
ずれる場合があって困っていました。特にVectorworks。
アプリケーションだけで100MBちかくあり、さらにはネットワーク版ですし、
サーバーの管理アプリケーションを経由してからの起動になりますので
よけいに時間がかかりますから、起動を待つ時間が微妙に都度違います。
Appleのディスカッションルームなどでは、ユニコードでアプリ名を調べて云々という
構文を見かけましたが、自分には敷居が高く、ちょっと大変で難解です。
答えを導きだすまでの手順アルゴリズムが自分の出来る範囲でやらなければなりません。
ですので、
① アプリケーションのプロセスがtrueなら起動している。fleseなら起動していない。
② アプリを起動させrepeat文でプロセスを確認
③ trueになったら、repeat文を抜ける。
という風に考えてみました。
これなら、delayの時間を何度も調整しなくて済みます。
欲を言えばファイルが開いているかどうかを確かめるのが早いのですが、
それは出来ないのでしょうがありません。次善の策ですがこれで十分です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
- set timeStart to current date
- tell application “Vectorworks 2010“
- activate
- end tell
- repeat
- tell application “System Events“ to exists application process “Vectorworks 2010“
- if result is true then exit repeat
- end repeat
- set timeEnd to current date
- set timeC to (timeEnd – timeStart) * 1000 / 1000
- tell application “Finder“
- activate
- display dialog “VectorWorksは起動しています“ & “ かかった時間は“ & timeC & “秒です。“ buttons {“OK“} default button 1
- end tell
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー