新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → Re: 请问导入一个media Player 控件后怎么用? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5671 个阅读者  浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: Re: 请问导入一个media Player 控件后怎么用? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18407
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 Re: 请问导入一个media Player 控件后怎么用?


    发信人: thanxMe (听说百事比可口好喝), 信区: DotNET        
    标  题: Re: 请问导入一个media Player 控件后怎么用?
    发信站: BBS 水木清华站 (Thu May 22 11:36:59 2003), 转信

    不知道你是web开发还是winform开发,不过应该差不多,给你一篇文章吧.

    http://www.gbnis.com/read_file.asp?type_id=.net&id=4038&left=net_programe
    VB.net与Media Player9.0嵌入式开发  
    作者:张悦 已阅读次数:24  

    --------------------------------------------------------------------------------
      
     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
      
      
    【 在 laotiger (今天你很美丽!!!) 的大作中提到: 】
    ∶谢谢!!


    --
    [为了朋友 可以两肋插刀]                                                          
        [为了MM 可以插朋友两刀]                                                      
            :]                                                                      
                                                                                     
                                                                                     
                                                                                     


    ※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.25.133.13]
    上一篇
    返回上一页
    回到目录
    回到页首
    下一篇


       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/9 2:26:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/19 5:18:52

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms