iTunes COM API を使用するアプリを作成して、C# のイベント処理を学んでいます。iTunesが曲の再生を停止したときに実行するメソッドがありますが、「停止/一時停止」ボタンを押してアプリでイベントをトリガーすると、メソッドが呼び出されません。
編集: dboarman の返信に基づいて、while ループを削除しました。これでイベントは処理されますが、PlayPlaylist() を実行する前に iTunes を再起動した場合のみです。PlayPlaylist() をもう一度実行すると、停止イベントが発生/処理されなくなります。
void trayIcon_Click(object sender, EventArgs e)
{
PlayPlaylist();
}
public static void PlayPlaylist()
{
itapp = new iTunesApp();
itapp.OnPlayerStopEvent +=
new _IiTunesEvents_OnPlayerStopEventEventHandler(itapp_OnPlayerStopEvent);
lastPlaylist = itapp.LibraryPlaylist;
itapp.Play();
}
static void itapp_OnPlayerStopEvent(object iTrack)
{
Debug.WriteLine("Stop Event fired");
//...
}
こちらの Pastebin のソースを更新しました(59 ~ 68 行が該当します)。
仕様: 私のアプリは、Genius のおすすめプレイリストの曲を最初から最後まで再生することになっています (デフォルトでは、iTunes は Genius のおすすめを連続して再生しません)。StopEvent は、再生するリスト内の次の曲をトリガーする必要があります。