C#でWindows Media Player ActiveX コントロールを使う その2

chakemiです。まずはじめに前回の説明で至らなかった点の補足からですが、 「COMコンポーネント」タブからチェックを入れる「Windows Media Player」は、wmp.dllのみで問題ありません。

では、気をとりなおして、前回の流れで今日は、Windows Media Player ActiveX コントロールを使って再生位置を表示させてみたいと思います。

再生位置はCtlcontrols.currentPositionStringプロパティから取得することが出来ます。

あとはこれを定期的に更新すればOKですね。

では、前回の続きに、フォームデザイナからTimerコントロールとLabelコントロールを追加します。

配置したTimerコントロール「timer1」をダブルクリックすると、イベントハンドラが生成されコードエディタが開きます。

あとは、このイベントハンドラで先ほど並べたLabelコントロール「label1」に再生位置が表示されるようにします。

1
2
3
4
private void timer1_Tick(object sender, EventArgs e)
{
    label1.Text = (axWindowsMediaPlayer1.Ctlcontrols.currentPositionString);
}

ここまで来たら後は、「timer1」をスタートさせるだけです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void Button1_Click(object sender, EventArgs e)
{
  //autoStartプロパティはデフォルトではtrueだったような
  //axWindowsMediaPlayer1.settings.autoStart = false;

    //
    axWindowsMediaPlayer1.URL = @"C:\Documents and Settings\All Users\DocumentsMusic\Sample Music\Beethoven's Symphony No. 9 (Scherzo).wma";
    //autoStartがfalseのときは、次のようにして再生する
    //axWindowsMediaPlayer1.Ctlcontrols.play();
  //タイマー開始
  timer1.Start();
    button1.Enabled = false;
    button2.Enabled = true;
}
//Button2のClickイベントハンドラ
private void Button2_Click(object sender, EventArgs e)
{
    //再生しているオーディオを停止する
    axWindowsMediaPlayer1.Ctlcontrols.stop();
    button1.Enabled = true;
    button2.Enabled = false;
}

これで、再生位置の取得が出来るようになりました~。

Comments