JavaからWindows 7上で動くiTunesを操作してみたかったので色々調べてみた。普通に操作するならC#とかの方がらくちんですがあえて。調べてみるとJACOBというのがイイっぽい。COMとWin32ライブラリを呼べる的な便利ライブラリ。JACOBを利用した方法はここに書いてあるけど、ちょっとソースが…な感じなので、もうちょい楽な方法を模索。で、iTunes Controllerとかいうラッパーを見つけた。JACOBのめんどい部分を隠してくれるので自分のようなゆとりにはうれしいライブラリだ。
参考
- JACOBライブラリのダウンロード: http://sourceforge.net/projects/jacob-project/
- iTunes Controller http://www.dot-totally.co.uk/software/itunescon/
準備
こんな感じで準備。実はあとで書くけどもう一手間必要。eclipseで動かしてます。
- iTunes ControllerのITConTest.jarを外部JARに追加
- JACOBのjacob.jarを外部JARに追加
早速動かしてみる
iTunes Controllerに載っているコードをそのまま動かす。
import com.dt.iTunesController.ITTrack; import com.dt.iTunesController.iTunes; public class Tunes { public static void main(String[] args){ iTunes itc = new iTunes(); ITTrack itt = itc.getCurrentTrack(); System.out.println(itt.getName()); } }
実行したらjacobのエラー
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.15-M4-x86 in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:184) at com.jacob.com.JacobObject.<clinit>(JacobObject.java:107) at com.dt.iTunesController.iTunes.<init>(iTunes.java:26) at tunes.main.Tunes.main(Tunes.java:9)
ぐぐって見るといくつか参考になるものページが。
ちなみに.dllファイルとは。(IT用語辞典より転載)
Windowsにおいて、複数のアプリケーションソフトが共通して利用するような 汎用性の高いプログラムを部品化してファイルとして保存しておき、必要に 応じてメモリに呼び出して利用する手法。
ということで.dllファイルを読み込む必要があったことが判明したのでWindowsのシステムディレクトリに突っ込んでしまう。あまりよろしくない気もするので、Javaのプログラム中に読み込む等、他の手段の方がいいかもね。
jacob-1.15-M4-x86.dllをWindowsのシステムディレクトリにコピる。 C:\Windows\System32\jacob-1.15-M4-x86.dll みたいなノリで。
で、もう一度やったら動いた。(・∀・)
これを使ってiTunesで現在再生してる曲をツイートするプログラムとか組んで遊んでみました。