WPF 中嵌入Windows Media Player

來源:互聯網
上載者:User

     上一篇通過MediaElement 控制項在WPF 4 中製作了簡單的媒體播放器。本篇將直接把Windows Media Player 嵌入WPF 中實現同樣的效果。起初建立該執行個體是基於.Net Framework 4.0 完成後編譯順利通過,但F5 時出現了問題。提示無法載入Interop.WMPLib,調試了許久也沒搞出個明堂。最後轉用.Net 3.5 問題解決,難道是4.0 不支援?感興趣的朋友可下載代碼進一步研究。

建立項目

1. 建立一個基於.Net Framework 3.5 的WPF 應用程式項目:WPFWMP。

2. 在工程中建立Windows Forms Control Library 項目:WMPControlLibrary。

建立WMP 控制項

     下面要在WMPControlLibrary 中建立Windows Media Player 控制項,在項目中加入Windows Media Player COM。

 

     在左側工具列中若沒有Windows Media Player 控制項的話,可以右鍵General 選擇Choose Items,在COM 組件列表中勾選Windows Media Player 選項。

將Windows Media Player 控制項拖入設計視窗,並將Dock 設定為Fill 填充控制項。

控制項:

 

F6 編譯項目後會產生以下三個DLL 檔案,這就是我們稍後將要在WPF 中用到的WMP 控制項陳列庫。

嵌入WMP 控制項

    回到WPF 項目在前篇文章的基礎上,保留其中“Open File” 按鍵和Button 樣式。將上面三個DLL 檔案及System.Windows.Forms、WindowsFormsIntegration 加入項目。

     在XAML 中加入AxWMPLib 命名空間,並將上篇MediaElement 替換為AxWindowsMediaPlayer 控制項,注意此處是將WinForm 控制項嵌入WPF 程式,所以要將AxWindowsMediaPlayer 控制項放到<WindowsFormsHost>標籤中。

<Window x:Class="WPFWMP.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:mediaControl="clr-namespace:AxWMPLib;assembly=AxInterop.WMPLib"        Title="WPF Media Player" Height="450" Width="520" Background="#FF554D4D">    <Window.Resources>        <Style x:Key="btnStyle" TargetType="Button">          … …        
</Style> </Window.Resources> <StackPanel HorizontalAlignment="Center" Margin="10"> <Border BorderThickness="3" Background="Black"> … …
<WindowsFormsHost Height="340" Width="450"> <mediaControl:AxWindowsMediaPlayer x:Name="wpfMediaPlayer"/> </WindowsFormsHost> </Border> <Button Content="Open File" Click="openFile_Click" Margin="10" Width="80" Style="{StaticResource btnStyle}"/> </StackPanel></Window>

通過Windows API Code Pack 為“Open File” 按鍵添加點擊事件,預設開啟Sample Video 檔案夾,選擇視頻檔案後自動播放。

private void openFile_Click(object sender, RoutedEventArgs e){    ShellContainer selectedFolder = null;    selectedFolder = KnownFolders.SampleVideos as ShellContainer;    CommonOpenFileDialog cfd = new CommonOpenFileDialog();    cfd.InitialDirectoryShellContainer = selectedFolder;    cfd.EnsureReadOnly = true;    cfd.Filters.Add(new CommonFileDialogFilter("WMV Files", "*.wmv"));    cfd.Filters.Add(new CommonFileDialogFilter("AVI Files", "*.avi"));    cfd.Filters.Add(new CommonFileDialogFilter("MP3 Files", "*.mp3"));    if (cfd.ShowDialog() == CommonFileDialogResult.OK)    {        wpfMediaPlayer.URL = cfd.FileName;    }}

原始碼下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.