VB.NET与Media Player9.0嵌入式开发
现在可以输入以下代码了:
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
'打开和关闭所有光驱仓门
Dim i
Dim k = AxWindowsMediaPlayer1.cdromCollection.count()
If k >1 Then
For i = 0 To k - 1
AxWindowsMediaPlayer1.cdromCollection.Item(i).eject()
Next
Else
AxWindowsMediaPlayer1.cdromCollection.Item(0).eject()
End If
End Sub
Private Sub Form1_Load()Sub Form1_Load(ByVal sender As Object,
ByVal e As System.EventArgs) Handles MyBase.Load
'获得计算机中有多少个光驱和它们的盘符
Dim i
Dim cdlabel As String
Dim k = AxWindowsMediaPlayer1.cdromCollection.count()
If k >1 Then
For i = 0 To k - 1
cdlabel = cdlabel &
AxWindowsMediaPlayer1.cdromCollection.Item(i).driveSpecifier()
Label1.Text = "这台计算机共有 " & k &
" 台CD-ROM" & "分别是" & cdlabel & " "
Next
Else
cdlabel = cdlabel +
AxWindowsMediaPlayer1.cdromCollection.Item(0).driveSpecifier()
Label1.Text = "这台计算机共有 " & k &
" 台CD-ROM" & "分别是" & cdlabel & " "
End If
End Sub
Private Sub Button2_Click()Sub Button2_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button2.Click
Dim strfilename As String
Dim OpenFileDialog1 As System.Windows.Forms.OpenFileDialog =
New System.Windows.Forms.OpenFileDialog()
OpenFileDialog1.ShowDialog()
strfilename = OpenFileDialog1.FileName
AxWindowsMediaPlayer1.URL = strfilename
End Sub
Private Sub Button3_Click()Sub Button3_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button3.Click
AxWindowsMediaPlayer1.controls.play()'播放
End Sub
Private Sub Button5_Click()Sub Button5_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button5.Click
AxWindowsMediaPlayer1.controls.stop()'停止
End Sub
Private Sub AxWindowsMediaPlayer1_PlayStateChange()Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As Object,
ByVal e As AxMicrosoft.MediaPlayer.Interop._WMPOCXEvents_PlayStateChangeEvent) Handles
AxWindowsMediaPlayer1.PlayStateChange
'表示播放媒体发生变化时触发此事件
Label4.Text = "此文件播放总时间是" &
AxWindowsMediaPlayer1.currentMedia.durationString
Timer1.Enabled = True
Label5.Text = "标题" &
AxWindowsMediaPlayer1.currentMedia.getItemInfoBytype("Title", "", 0)
Label6.Text = "作者" &
AxWindowsMediaPlayer1.currentMedia.getItemInfoBytype("Author", "", 0)
End Sub
Private Sub Button4_Click()Sub Button4_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button4.Click
AxWindowsMediaPlayer1.controls.pause()'暂停
End Sub
Private Sub Timer1_Tick()Sub Timer1_Tick(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Timer1.Tick
Label2.Text = "已经播放时间" &
CInt(AxWindowsMediaPlayer1.controls.currentPosition) & "秒"
End Sub
Private Sub TrackBar1_Scroll()Sub TrackBar1_Scroll(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles TrackBar1.Scroll
AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value'调整输出音量
End Sub
程序说明:当你按下F5开始编译时,系统会提示你有一个错误,这个错误就是在"Windows 窗体设计器生成的代码"中的"Me.AxWindowsMediaPlayer1.enabled = True"这条语句引起的,其原因是media player 9.0的控件与.net的兼容问题,此问题已经得到微软的证实,在下一版本中即vs2003.net将不会有此问题,在此版本中解决方法是将此代码去掉即可。
文中使用的getItemInfoBytype属性是用来读取元数据的中的信息(对于元数据的定义见sdk),这些信息是在媒体建立时输入进去的,但是这个属性并不会在你编写代码时自动出现,有就是说不具备智能填充功能,其原因是media player 9.0控件的某些新功能是通过接口发布的,而未在com类型库中发布,所以不具备智能填充功能。不过你可以按照sdk给出的语法书写,编译器不会识别不出来的。程序中对文件的播放时间的计算单位是秒,如果你感兴趣可以将它转换为mm:ss的格式。
运行如图4

0
相关文章