WPF 中嵌入Windows Media Player

简介:
+关注继续查看

  上一篇通过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。

ControlLibrary

创建WMP 控件

     下面要在WMPControlLibrary 中创建Windows Media Player 控件,在项目中加入Windows Media Player COM。

 AddMediaPlayerReference

     在左侧工具栏中若没有Windows Media Player 控件的话,可以右键General 选择Choose Items,在COM 组件列表中勾选Windows Media Player 选项。

AddItem

AddCOM

将Windows Media Player 控件拖入设计窗口,并将Dock 设置为Fill 填充控件。

Dock

控件效果图:

 AddControl

F6 编译项目后会生成以下三个DLL 文件,这就是我们稍后将要在WPF 中用到的WMP 控件库。

BuildDLL

嵌入WMP 控件

    回到WPF 项目在前篇文章的基础上,保留其中“Open File” 按键和Button 样式。将上面三个DLL 文件及System.Windows.Forms、WindowsFormsIntegration 加入项目。

AxInterop

FormDLL

     在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;
    }
}

Demo

源代码下载





本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2010/05/07/wpf-embed-wmp.html,如需转载请自行联系原作者
相关文章
|
Windows
windows系统下运行QT视频播放器示例程序(Media Player Example )
windows系统下运行QT视频播放器示例程序(Media Player Example )
244 0
windows系统下运行QT视频播放器示例程序(Media Player Example )
|
虚拟化 Windows
windows 10 使用 VMWare workstation player 启动 windows XP 虚拟机出错的问题
windows 10 使用 VMWare workstation player 启动 windows XP 虚拟机出错的问题
164 0
windows 10 使用 VMWare workstation player 启动 windows XP 虚拟机出错的问题
|
Windows
as3单播放mp3的cpu占用和windows上的media player差不多,占用很低
as3单播放mp3的cpu占用和windows上的media player差不多,占用很低
相关产品
云迁移中心
推荐文章
更多