首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> Maya教程
VB.net与Media Player9.0嵌入式开发-.NET教程,VB.Net语言
作者:网友供稿 点击:67
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[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

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·C# 1.x 实现 "强类型元素唯一的 ArrayList"-.NET教程,C#语言
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·快速測試 Tomcat + Oracle 9i + JSP-JSP教程,Jsp/Servlet
·使用.NET读取XML文件-.NET教程,XML应用
·XML 实用工具类-JSP教程,Java与XML
·如何把ASP编写成DLL-ASP教程,ASP应用
·vb.net中不需要EXCEL导出成XSL-.NET教程,VB.Net语言
·Asp之Request对象(1)-ASP教程,ASP应用
·C#读硬盘序列号的原代码-.NET教程,C#语言
·取得的IP/用户名等信息-ASP教程,ASP应用
最新文章
·linux操作系统上摄像头的使用小技巧_linux教程
·c#动态生成树型结构的web程序设计_c#应用
·一个联盟该如何来吸引站长加盟_网赚技巧
·童之磊:中文在线的“二次创业”_站长访谈
·实体店铺如何与网店结合提高销售额的经验_站长心得
·20年之后,个人站长发展项目的一些奇思怪想_站长心得
·google adsense的菜鸟常识_google推广
·如何利用google增加你的网站访问量_google推广
·专业的seo,为什么不承诺排名_seo网站优化
·用专业代码给网站增加搜索引擎_站长心得
相关主题
  • vb.net实现窗体图标最小化到状态栏_vb/vb.net教程
  • vb.net基本语句_vb/vb.net教程
  • VB.NET中让Textbox只能输入数字(二)-.NET教程,VB.Net语言
  • VB.NET中让Textbox只能输入数字-.NET教程,VB.Net语言
  • vb.net中不需要EXCEL导出成XSL-.NET教程,VB.Net语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭