ホーム >プログラム >Delphi 6 ローテクTips >TWindowsMediaPlayerでCD再生

TWindowsMediaPlayerでCD再生を行おうというページ。


TWindowsMediaPlayerでCDを再生させるのは簡単です。
まずTWindowsMediaPlayerのcdromCollectionオブジェクトのItemプロパティでPCにつながっているCDドライブオブジェクトを取得します。
次にそのCDドライブオブジェクトのPlaylistオブジェクトでCDアルバムのオブジェクトを取得してこれをTWindowsMediaPlayerのcurrentPlaylist.appendItemメソッドでプレイリストに登録するだけでいけます。
あるいはエクスプローラからCDにある*.cdaファイルをURLプロパティに入れるなりPlaylistに登録してしまってもOKです。

procedure TForm1.Button1Click(Sender: TObject);
var
  l_CdDriveList: IWMPCdromCollection; //CDドライブのリスト
  l_CdDrive:     IWMPCdrom;           //CDドライブ
  l_CdAlbum:     IWMPPlaylist;        //CDアルバム
  l_CdMedia:     IWMPMedia;           //トラック(曲)
  i: Integer;
begin
  l_CdDriveList := WindowsMediaPlayer1.cdromCollection;
  l_CdDrive     := l_CdDriveList.Item(0); //CDドライブの0から始まるインデックスを指定
  l_CdAlbum     := l_CdDrive.Playlist;

  WindowsMediaPlayer1.currentPlaylist.clear; //プレイリストをクリア
  //アルバムのトラックの数だけ処理を行う
  for i := 0 to l_CdAlbum.count -1 do begin
    l_CdMedia := l_CdAlbum.Item[i];
    WindowsMediaPlayer1.currentPlaylist.appendItem(l_CdMedia);
  end;
  WindowsMediaPlayer1.controls.play;
end;

IWMPCdromCollectionやIWMPCdromなどの詳細はCDDBのようなCDアルバム情報を取得を参照。


気をつける点は、IWMPMediaオブジェクトのsourceURLプロパティの値です。
mp3やwmaファイルなどではファイルのフルパスが返ってくのですが、CDアルバムではちょっと違います。

  wmpcd://ドライブ番号/トラック


というフォーマットの文字列が返ってきます。
ドライブ番号というのはIWMPCdromCollectionオブジェクトのItemプロパティでCDドライブオブジェクトを取り出すときに指定する番号のことです。1番目のCDドライブなら0、2番目のCDドライブなら1、というように0ベースのインデックスになります。

トラックは0ベースではなく、1曲目なら1、2曲目なら2、というように1ベースのインデックスになります。

例えば1台目のCDドライブの3曲目の場合なら

  wmpcd://0/3


となり、そういう形式で返ってくるということです。

CDドライブにディスクが入っているかどうかを確かめるにはIWMPPlaylistオブジェクトのcountプロパティを調べます。
この値が1以上ならCDアルバムがCDドライブに入っていると判断できます。


2009-01-03