AxWindowsMediaPlayerにファイルを登録 2つの方法

実行結果の違いの検証


下記のコードを実行して実行結果の違いを調べましょう。ファイルパスはWindowsに
付属しているサンプルミュージックのパスを使っています。コピペして実行してみてください。

一番目
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AxWindowsMediaPlayer1.currentPlaylist.appendItem _
(AxWindowsMediaPlayer1.newMedia("C:\Users\Public\Music\Sample Music\Kalimba.mp3"))
End Sub


二番目
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
axWindowsMediaPlayer1.URL = "C:\Users\Public\Music\Sample Music\Kalimba.mp3"
End Sub


違いがわかりましたか?
一番目のコードでは、実行しても何も変化がありません。ところが二番目のコードの場合は
実行直後すぐに演奏が始まってしまいます。ですので、2番目のコードを使う場合は、再生「Play」ボタンクリックイベントの中で ファイル登録するか、下記のコードを追加します。
「AxWindowsMediaPlayer1.settings.autoStart = False」


又 一番目のコードでファイルを登録した場合は下記のメソッドで正常に一時停止→再生ができますが。
AxWindowsMediaPlayer1.Ctlcontrols.pause()

二番目のコードでファイルを登録した場合は一時停止ボタンをクリックすると演奏の最初に戻ってしまいますので 下記のコードで、一時停止した位置を変数に記録して、再生時に又その値を戻します。
AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
サンプルコードを掲載します。

'Button1_Clickイベントで参照できるようにここに記載
Dim pausedoubl As Double
'再生「Play」
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'演奏ファイルの登録
AxWindowsMediaPlayer1.URL = ("C:\test\test4.mp3")

'最初はpausedoublが0なので通常のplayメソッドで対応
If pausedoubl = 0 Then
AxWindowsMediaPlayer1.Ctlcontrols.play()
'一時停止した場合はpausedoublが0より大きいためcurrentPositionに
'pausedoublを代入する
ElseIf pausedoubl > 0 Then
AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = pausedoubl
End If
End Sub

'一時停止「Pause」
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

'一時停止
AxWindowsMediaPlayer1.Ctlcontrols.pause()

'一時停止の位置をpausedoublに代入
pausedoubl = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
End Sub