首页
关于我们
服务项目
作品展示
服务支持
联系我们
友情链接
网站地图
 您当前位置:网络学院 -> 编程开发系-> 编程开发-> VB教程
VB.NET与Media Player9.0嵌入式开发
作者:admin 来源:网络
日期: 2007-2-27
站内搜索
文章页数:[1] 
     Windows Media Player 9.0是微软推出的最新数字媒体播放器,它除了继承了media player 8.0的优秀之处外,还添加了许多的实用功能。不过这些功能并不是本文讲述的重点,本文要讲的是如何利用media player来编写一个自己的嵌入式软件,并让它拥有播放cd,vcd,avi,mp3等的功能。 

  要编写这个程序你首先要熟悉vb.net,因为本程序是使用vb.net编写。在你的计算机上要安装windows media player 9.0。最后最关键的是要安装windows mendia player 9.0 sdk,在sdk中包含了一个dll,这个dll的作用是完成com和.net之间的转换,因为media player 9.0的编程要使用一个media player 9.0 activeX控件,而activeX的本质就是一个com。对于windows mendia player 9.0 sdk可以到微软的msdn去下载。  

  完成上面3个软件的安装后还不可以动手编写代码,因为要保证mendia player 9.0要与.net框架通信,还必须注册mendia player 9.0的pia,所谓pia是"Primary interop assemblies"的缩写本人将它翻译为"原始内部汇编集",之所以要先注册它是因为com技术诞生在.net技术之前要让com和.net通信就要一个中间层来连接这两边在mendia player 9.0中使用mendia player 9.0 sdk redist目录下的wmppia.dll来注册mendia player 9.0的pia,在命令窗口中输入:[path]regasm c:\WMSDK\WMPSDK9\ redist\wmppia.dll(regasm是.net提供的pia注册程序,path是它的路径,你可以用搜索功能来找到它)。 

  各位别以为注册了pia就可以编程了,你还得将它添加到全局缓存中。在命令窗口中输入:[path]Gacutil /i C:\WMSDK\WMPSDK9\redist\wmppia.dll(Gacutil是.net提供的全局缓存添加程序,path是它的路径,你可以用搜索功能来找到它) 

  完成上面的5个步骤后就可以开始编写代码了。为了让.net使用pia,我们必须要在代码的开头添加下面一条语句: Imports Microsoft.MediaPlayer.Interop现在就可以开始我们的编程之旅了。

  右击vs.net ide的控件工具箱,在快捷菜单中单击"自定义工具箱",在"自定义工具箱"中选中"windows media player"并单击"确定"(图1)


图1


  此时会在控件工具拦底部添加一个mendia的控件标志。双击此控件,将它放在窗体上。右击它并点击"属性"在出现的属性窗口(图2)中将"选择模式"设置为"none"并单击"确定",这样做的目的是去掉原来的播放控件。



图2



  然后在窗口中在添加如图3的控件,在属性窗口中将TrackBar1控件的最大和最小值设定为100和0,因为media的音量范围是0到100,我们用TrackBar1控件来调整播放音量。T  imer1的interval设置为1000。

图3



  现在可以输入以下代码了:

Private 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(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(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(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles Button3.Click
AxWindowsMediaPlayer1.controls.play()'播放
End Sub
Private 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(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(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles Button4.Click
AxWindowsMediaPlayer1.controls.pause()'暂停
End Sub
Private 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(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

图4

文章页数:[1] 
放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·VB网络编程的基础知识
·VB6.0数据库访问技术与例程解析
·Visual Basic数据库操作方法小结
·VB实现SQL Server 2000存储过程调用
·VB实现图像在数据库的存储与显示
·在VB中存取数据库中的图片
·Visual Basic 的数据库编程
·使用Data控件访问数据库
·在Access数据库中实现密码管理
·掌握VB中的ADO数据对象编程
最新文章
·使用Data控件访问数据库
·VB表格控件总览与例程分析
·在Access数据库中实现密码管理
·Visual Basic 的数据库编程
·VB6.0数据库访问技术与例程解析
·基于Visual Basic 6的网络程序设计
·VB实现SQL Server 2000存储过程调用
·VB实现图像在数据库的存储与显示
·在VB中用DAO实现数据库编程
·在VB中存取数据库中的图片
相关主题
版权申明:除部分特别声明不要转载,或者授权本站独家播发的文章外,大家可以自由转载本站的原创文章,但原作者和来自本站的链接必须保留(非本站原创的,按照原来自一节,自行链接)。文章版权归本站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去本站水印。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论  打印  刷新  推荐给朋友  返回顶部  关闭

网上大名: