Windows版のiTunesで現在聴いてる曲の情報を取得する(C#編)

iPhone/iPod touchにはIn the Moodという、現在iPhone/iPod touchで聴いてる曲の曲名などの情報をTwitterに少しカスタマイズした形式でポストできるアプリがあります。
しかし、Windows版のiTunesで曲を聴いてるときに、iTunesにも似たような機能があるだろうと思って探してみたのですが、見つかりませんでした。曲のプロパティで曲名などを個別にコピーすればできますがとても手間がかかります。
そこで、iTunesで現在聴いてる曲の情報を取得できないか調べてみました。WindowsiTunesをインストールしていて、何か曲を聴いていることを前提とします。また、Visual Studio 2010を使いました。

  1. Visual Studio C#で新規にプロジェクトを作成して、ソリューションエクスプローラーで、作成したプロジェクトの[参照設定]を右クリックして[参照の追加]を選択します。
  2. [参照の追加]ダイアログで[COM]タブを選択します。
  3. [コンポーネント名]が[iTunes 1.13 Type Library]パスがiTunes.exeの項目を選択して[OK]をクリックします。
  4. すると、プロジェクトに、自動的にInterop.iTunesLib.dllというファイルができて、ソリューションエクスプローラーには[参照設定]にはiTunesLibが追加されます。
  5. C#のコードファイルの適切な位置に以下のusing文を追加します。
using iTunesLib;
using System.Runtime.InteropServices;

以下のようなメソッドを追加します。文字列の組み立ての部分は好みに応じて変えてください。IntelliSenseを使用すれば、IITTrackインターフェースにどんなメンバーがあるか見ることができます。


/// <summary>
/// iTunesで現在聴いてる曲の情報の文字列を取得
/// </summary>
/// <returns>iTunesで現在聴いてる曲の情報の文字列</returns>
private static string GetCurrentMusic() {
    string text = "";
    iTunesApp app = new iTunesLib.iTunesApp();
    IITTrack track = app.CurrentTrack;
    if (track != null && track.Enabled)
    {
        text = string.Format("[聴いてる♪]「{0} - {1}」 by {2}" , track.Name, track.Album, track.Artist);
    }
    Marshal.ReleaseComObject(app);
    return text;
}

これを、コンソールアプリならConsole.WriteLine(GetCurrentMusic())で出力、WindowsアプリならTextBox.Textにセットすれば、目的の文字列が取得して表示できます。これをコピーしてツイッタークライアントのテキストボックスに貼り付けて、つぶやけば現在の聴いてる曲をTwitterなどでつぶやくことができます。