ここでは、VB2005でaxWindowsMediaPlayerコンポーネントを使用してメディアプレーヤーを作成する方法を説明します。

 1.ツールボックスの「すべてのWindowsフォーム」上で右クリックし「アイテムの選択」をクリックします。
    

 2.アイテムの選択ダイアログで「COMコンポーネント」の中の「Windows Media Player」にチェックを入れてOKをクリック。
    

 3.追加された「Windows Media Player」コントロールをフォームに貼り付けします。
    

 4.今回はvbから制御するのでコントロール内の制御ボタン類を非表示にする為、プロパティの「uiMode」を「none」にします。
    

 5.Button1、Button2、HScrollBar1、Timer1、Timer2を貼り付けます。
    
    ※Button1のtextプロパティを"再生"、Button2のtextプロパティを"停止"に変更しています。

 6.Button1(再生)をダブルクリックして以下のコードを記述します。

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Me.AxWindowsMediaPlayer1.URL = "C:\TestMovie.AVI" 'ファイルをフルパスで指定
      Me.AxWindowsMediaPlayer1.Ctlcontrols.play() '再生開始
   End Sub
   
   「C:\TestMovie.AVI」というファイルをあらかじめ準備しておいて下さい。
   これだけで再生ができるようになります。
   デバック開始をして、再生ボタンを押してみて下さい。準備した動画がフォーム上で再生されると思います。

 7.Button2(停止)をダブルクリックして以下のコードを記述します。

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      Me.AxWindowsMediaPlayer1.Ctlcontrols.stop() '停止
   End Sub

    ポイント----------------------------------
      主な制御
      .Ctlcontrols.play()  …再生開始
      .Ctlcontrols.stop()  …停止
      .Ctlcontrols.pause() …一時停止
      .Ctlcontrols.currentPosition …再生位置
    -----------------------------------------

   続いて再生位置をスクロールバーで調整できるようにするのですが、ここがちょっと面倒です。

 8.再生長を取得するには再生中にMe.AxWindowsMediaPlayer1.currentMedia.durationから取得する必要があります。
   再生ボタンを押してから実際に再生するまでタイムラグがある為、再生中かどうかをタイマーで監視して再生中だということが確認されたら取得をすればOKです。
   Button1(再生)をダブルクリックし6.で記述した内容を下記に変更します。

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Me.AxWindowsMediaPlayer1.URL = "C:\TestMovie.AVI" 'ファイルをフルパスで指定
      Me.AxWindowsMediaPlayer1.Ctlcontrols.play() '停止
      Me.Timer1.Enabled = True 'Timer1イベントで再生長取得を開始
   End Sub

   さらにTimer1をダブルクリックし以下を記述します。

   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      If Me.AxWindowsMediaPlayer1.playState = 3 Then '再生中は.playStateが3となる
         'スクロールバーの上限に再生長を設定
        Me.HScrollBar1.Maximum = Me.AxWindowsMediaPlayer1.currentMedia.duration + Me.HScrollBar1.LargeChange
        Me.Timer1.Enabled = False 'Timer1での監視を停止
        Me.Timer2.Enabled = True 'Timer2での監視を開始
      End If
   End Sub

    ポイント----------------------------------
      .playStateの値の変化は以下の通りです。
       ファイルのロード …10
       再生        …9→3
       停止        …1
       一時停止     …2

      再生長は以下で取得します。
       .currentMedia.duration

      スクロールバーのスクロール範囲は
       .Maximum - .Minimum - .LargeChangeで表わされます。
    -----------------------------------------

 9.再生中の位置をスクロールバーに反映させます。
   Timer2を使って再生位置を常時監視しスクロールバーのValueに入力します。
   動画再生の状態もここで監視して、停止している場合は監視を停止します。

   Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
      Me.HScrollBar1.Value = Me.AxWindowsMediaPlayer1.Ctlcontrols.currentPosition '再生位置をスクロールバーのValueへ入力
      If Me.AxWindowsMediaPlayer1.playState = 1 Then '動画が停止していた場合
         Me.Timer2.Enabled = False 'Timer2の監視を停止
      End If
   End Sub

 10.スクロールバーをスクロールさせた時に再生位置を変更する。

   Timer2.Enabled = False '再生位置の監視を一旦停止(スクロール中に値が変更されてカクカクする為)
      Me.AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = Me.HScrollBar1.Value '再生位置にスクロール位置を反映
   Timer2.Enabled = True '再生位置の開始を再開

    ポイント----------------------------------
      その他よく使うであろうコントロール
       .settings.volume … 音量ボリューム( 0〜100で設定)
       .settings.balance … 音量左右バランス(-50〜50で設定)
       .settings.mute … 消音(ミュート)
       .currentMedia.imageSourceWidth …動画ソースの幅
       .currentMedia.imageSourceHeight …動画ソースの高さ
    -----------------------------------------

いかがでしたでしょうか。結構簡単に実装できたのではないでしょうか。











以下に全コードをまとめます。

----------------------------------
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Me.AxWindowsMediaPlayer1.URL = "C:\TestMovie.AVI" 'ファイルをフルパスで指定
  Me.AxWindowsMediaPlayer1.Ctlcontrols.play() '再生開始
  Me.Timer1.Enabled = True 'Timer1イベントで再生長取得を開始
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  Me.AxWindowsMediaPlayer1.Ctlcontrols.stop() '停止
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  If Me.AxWindowsMediaPlayer1.playState = 3 Then '再生中は.playStateが3となる
    Me.HScrollBar1.Maximum = Me.AxWindowsMediaPlayer1.currentMedia.duration + Me.HScrollBar1.LargeChange 'スクロールバーの上限に再生長を設定
    Me.Timer1.Enabled = False 'Timer1での監視を停止
    Me.Timer2.Enabled = True 'Timer2での監視を開始
  End If
End Sub

Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
  Timer2.Enabled = False '再生位置の監視を一旦停止(スクロール中に値が変更されてカクカクする為)
   Me.AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = Me.HScrollBar1.Value '再生位置にスクロール位置を反映
  Timer2.Enabled = True '再生位置の開始を再開
End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  Me.HScrollBar1.Value = Me.AxWindowsMediaPlayer1.Ctlcontrols.currentPosition '再生位置をスクロールバーのValueへ入力
  If Me.AxWindowsMediaPlayer1.playState = 1 Then '停止していた場合
    Me.Timer2.Enabled = False 'Timer2の監視を停止
  End If
End Sub

End Class
----------------------------------