熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

VB.net與Media Player9.0嵌入

2013-11-13 10:18:14  來源: .NET編程 

  Windows Media Player 是微軟推出的最新數字媒體播放器它除了繼承了media player 的優秀之處外還添加了許多的實用功能不過這些功能並不是本文講述的重點本文要講的是如何利用media player來編寫一個自己的嵌入式軟件並讓它擁有播放cdvcdavimp等的功能 

  要編寫這個程序你首先要熟悉因為本程序是使用編寫在你的計算機上要安裝windows media player 最後最關鍵的是要安裝windows mendia player sdk在sdk中包含了一個dll這個dll的作用是完成之間的轉換因為media player 的編程要使用一個media player activeX控件而activeX的本質就是一個com對於windows mendia player sdk可以到微軟的msdn去下載  

  完成上面個軟件的安裝後還不可以動手編寫代碼因為要保證mendia player 要框架通信還必須注冊mendia player 的pia所謂pia是Primary interop assemblies的縮寫本人將它翻譯為原始內部匯編集之所以要先注冊它是因為com技術誕生技術之前要讓通信就要一個中間層來連接這兩邊在mendia player 中使用mendia player sdk redist目錄下的wmppiadll來注冊mendia player 的pia在命令窗口中輸入[path]regasm c:\WMSDK\WMPSDK\ redist\wmppiadll(提供的pia注冊程序path是它的路徑你可以用搜索功能來找到它) 

  各位別以為注冊了pia就可以編程了你還得將它添加到全局緩存中在命令窗口中輸入[path]Gacutil /i C:\WMSDK\WMPSDK\redist\wmppiadll(提供的全局緩存添加程序path是它的路徑你可以用搜索功能來找到它) 

  完成上面的個步驟後就可以開始編寫代碼了為了使用pia我們必須要在代碼的開頭添加下面一條語句 Imports MicrosoftMediaPlayerInterop現在就可以開始我們的編程之旅了

  右擊 ide的控件工具箱在快捷菜單中單擊自定義工具箱自定義工具箱中選中windows media player並單擊確定(圖

  圖

  

  此時會在控件工具攔底部添加一個mendia的控件標志雙擊此控件將它放在窗

  體上右擊它並點擊屬性在出現的屬性窗口(圖)中將選擇模式設置為none並單擊確定這樣做的目的是去掉原來的播放控件

  

  然後在窗口中在添加如圖的控件在屬性窗口中將TrackBar控件的最大和最小值設定為因為media的音量范圍是我們用TrackBar控件來調整播放音量T  imer的interval設置為

  

  現在可以輸入以下代碼了

  Private Sub Button_Click(ByVal sender As SystemObject
  ByVal e As SystemEventArgs) Handles ButtonClick
        打開和關閉所有光驅倉門
        Dim i
        Dim k = AxWindowsMediaPlayerunt()
        If k > Then
            For i = To k
                AxWindowsMediaPlayercdromCollectionItem(i)eject()
            Next
        Else
            AxWindowsMediaPlayercdromCollectionItem()eject()
        End If
    End Sub
 Private Sub Form_Load(ByVal sender As Object
      ByVal e As SystemEventArgs) Handles MyBaseLoad
        獲得計算機中有多少個光驅和它們的盤符
        Dim i
        Dim cdlabel As String
        Dim k = AxWindowsMediaPlayerunt()
        If k > Then
            For i = To k
                cdlabel = cdlabel &
    AxWindowsMediaPlayercdromCollectionItem(i)driveSpecifier()
                LabelText = 這台計算機共有 & k &
     台CDROM & 分別是 & cdlabel &
            Next
        Else
            cdlabel = cdlabel +
       AxWindowsMediaPlayercdromCollectionItem()driveSpecifier()
            LabelText = 這台計算機共有 & k &
        台CDROM & 分別是 & cdlabel &
        End If
    End Sub
    Private Sub Button_Click(ByVal sender As SystemObject
      ByVal e As SystemEventArgs) Handles ButtonClick
        Dim strfilename As String
        Dim OpenFileDialog As SystemWindowsFormsOpenFileDialog =
   New SystemWindowsFormsOpenFileDialog()
        OpenFileDialogShowDialog()
        strfilename = OpenFileDialogFileName
        AxWindowsMediaPlayerURL = strfilename
    End Sub
    Private Sub Button_Click(ByVal sender As SystemObject
        ByVal e As SystemEventArgs) Handles ButtonClick
        AxWinntrolsplay()播放
    End Sub
    Private Sub Button_Click(ByVal sender As SystemObject
        ByVal e As SystemEventArgs) Handles ButtonClick
        AxWinntrolsstop()停止
    End Sub
Private Sub AxWindowsMediaPlayer_PlayStateChange(ByVal sender As Object
 ByVal e As AxMicrosoftMediaPlayerInterop_WMPOCXEvents_PlayStateChangeEvent) Handles
   AxWindowsMediaPlayerPlayStateChange
表示播放媒體發生變化時觸發此事件
        LabelText = 此文件播放總時間是 &
     AxWindowsMediaPlayercurrentMediadurationString
        TimerEnabled = True
        LabelText = 標題 &
    AxWindowsMediaPlayercurrentMediagetItemInfoBytype(Title )
        LabelText = 作者 &
    AxWindowsMediaPlayercurrentMediagetItemInfoBytype(Author )
           End Sub
    Private Sub Button_Click(ByVal sender As SystemObject
        ByVal e As SystemEventArgs) Handles ButtonClick
        AxWinntrolspause()暫停
    End Sub
    Private Sub Timer_Tick(ByVal sender As SystemObject
        ByVal e As SystemEventArgs) Handles TimerTick
        LabelText = 已經播放時間 &
   CInt(AxWinntrolscurrentPosition) &
    End Sub
    Private Sub TrackBar_Scroll(ByVal sender As SystemObject
        ByVal e As SystemEventArgs) Handles TrackBarScroll
        AxWindowsMediaPlayersettingsvolume = TrackBarValue調整輸出音量
End Sub
 

  程序說明當你按下F開始編譯時系統會提示你有一個錯誤這個錯誤就是在Windows 窗體設計器生成的代碼中的MeAxWindowsMediaPlayerenabled = True這條語句引起的其原因是media player 的控件的兼容問題此問題已經得到微軟的證實在下一版本中即將不會有此問題在此版本中解決方法是將此代碼去掉即可

  文中使用的getItemInfoBytype屬性是用來讀取元數據的中的信息(對於元數據的定義見sdk)這些信息是在媒體建立時輸入進去的但是這個屬性並不會在你編寫代碼時自動出現有就是說不具備智能填充功能其原因是media player 控件的某些新功能是通過接口發布的而未在com類型庫中發布所以不具備智能填充功能不過你可以按照sdk給出的語法書寫編譯器不會識別不出來的程序中對文件的播放時間的計算單位是秒如果你感興趣可以將它轉換為mmss的格式

  運行如圖

  

  圖


From:http://tw.wingwit.com/Article/program/net/201311/13204.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.