[AppleScript] 常駐アプリのように一定時間で繰り返しの処理をさせたい場合
Macintosh の操作自体もよくわからないまま AppleScript を触っております。
VBでいうところの Timer コントロールを使ったときのように、
アプリを実行させている間、一定の処理を繰り返しでさせる、
ということをやりたかったわけです。
XCode ( + Interface Builder ) を使っていますが、
それらしき部品がないようなので、無限ループを走らせてその中で
処理をすればいいか、とも考えたのですがいざ動かせてみると
ループ処理の中で処理がまわっているので、そのウインドウを
触ることが出来ず、閉じるボタンすら押せないというありさま。
VBならOSに制御を渡す DoEvents などあるわけですが、
それも探してもなさそうなので途方に暮れておりました。
さらに探すと、どうもそういう方法ではないらしいと気がつく。
Xcode & アップルスクリプト虎の巻
http://homepage3.nifty.com/kajiwa-nya/applescript/anchoco.html
ここの「常駐型」というところですね。
on idle 〜 end idle でくくり、 return には一定秒数を記述します。
上記の場合、30秒ごとに「・・・」に記述されたスクリプトが処理されます。
なるほどと思いそう書いてみるものの、ビルドして実行してみると
どうもこのイベントが効いている様子がない。
まだ一工夫いるようです。
AppleScript -- Handlers
http://www.drycarbon.com/applescript/manuals/handlers/handler_etc.html
でも XCode ではこういう項目がないわけです。
おそらくテキストエディタで作った場合での方法でしょう。
「AppleScript Programming for Mac OS X」追補情報
http://homepage.mac.com/tuyano/Tankoubon/X-AS.html
新しい Xcode だと Info ウインドウではなく Inspector だったり違いはあるわけですが、
とりあえず Application の設定自体にイベントが有効であるかを示す設定があるので
それをONにしろということのようです。
VBでいうところの Timer コントロールを使ったときのように、
アプリを実行させている間、一定の処理を繰り返しでさせる、
ということをやりたかったわけです。
XCode ( + Interface Builder ) を使っていますが、
それらしき部品がないようなので、無限ループを走らせてその中で
処理をすればいいか、とも考えたのですがいざ動かせてみると
ループ処理の中で処理がまわっているので、そのウインドウを
触ることが出来ず、閉じるボタンすら押せないというありさま。
VBならOSに制御を渡す DoEvents などあるわけですが、
それも探してもなさそうなので途方に暮れておりました。
さらに探すと、どうもそういう方法ではないらしいと気がつく。
Xcode & アップルスクリプト虎の巻
http://homepage3.nifty.com/kajiwa-nya/applescript/anchoco.html
ここの「常駐型」というところですね。
on idle
…
return 30
end idle
on idle 〜 end idle でくくり、 return には一定秒数を記述します。
上記の場合、30秒ごとに「・・・」に記述されたスクリプトが処理されます。
なるほどと思いそう書いてみるものの、ビルドして実行してみると
どうもこのイベントが効いている様子がない。
まだ一工夫いるようです。
AppleScript -- Handlers
http://www.drycarbon.com/applescript/manuals/handlers/handler_etc.html
「アイドル状態」は、スクリプトが「実行後自動的に終了しない」をチェックした状態で保存されていなければ実行されません。また、スクリプトを開始した場合、まず「run」が実行された直後、一度目の「アイドル状態」が実行されます。
でも XCode ではこういう項目がないわけです。
おそらくテキストエディタで作った場合での方法でしょう。
「AppleScript Programming for Mac OS X」追補情報
http://homepage.mac.com/tuyano/Tankoubon/X-AS.html
●8-2. Dropletプロジェクトのスクリプト設定について
1. MainMenu.nibをInterface Builderで開く。
2. Nibファイルウィンドウで「File's Owner」を選択し、InfoウィンドウのAppleScriptを開く。
3. Applicationの中に「idle」「open」の2つの項目がONになっていることを確認する。
4. その下のスクリプトファイルのチェックがはずれているはずなのでONにする。
5. すべて保存すれば完了。これできちんとイベントが機能するはずです。
新しい Xcode だと Info ウインドウではなく Inspector だったり違いはあるわけですが、
とりあえず Application の設定自体にイベントが有効であるかを示す設定があるので
それをONにしろということのようです。


