JavaからAppleScript経由でiTunesを操作、の謎
JavaからAppleScriptを実行してMacOSX上のiTunesを制御しようと、以下のコードを書いてみました。(スクリプト自体は、現在の曲から次の曲に飛ぶというシンプルなやつ)
ちなみに実行環境は
import java.util.*; import com.apple.cocoa.foundation.*; import com.apple.cocoa.application.*; public class AppleScriptDemo { public static void main (String args[]) { NSApplication.sharedApplication(); System.out.println("start"); String script = "tell application ?"iTunes?" ?n" + "next track ?n" + "end tell"; NSAppleScript myScript = new NSAppleScript(script); NSMutableDictionary errors = new NSMutableDictionary(); // Execute the script! NSAppleEventDescriptor results = myScript.execute(errors); System.out.println("AppleScript Executed"); } }
(このコードをコンパイル、実行するときには-classpathに/System/Library/Javaを設定してください)
ですが、実行してもウンともスンとも言わない。おかしいなと思い放置してみると、1分〜2分後にスクリプトが実行されることに気づきました。これじゃ使い物にならないですね。デスクトップにフォルダを作るといったスクリプトはすぐに起動されるのですけど。
Objective-CからNSAppleScriptを起動するとiTunesもサクサク動くんですけどね。謎だ。