使用Window 自带的控件 axWindowsMediaPlayer 制作播放器

首先,需要把Medio Player 控件添加到工具箱中,具体操作如下:

在VS编程环境的“工具箱”中单击右键,选择“选择项”菜单,打开“选择工具箱项”窗口,选择“COM组件”标签,在列表中找到并勾选“Windows Media Player”组件,单击“确定”按钮。将该组件添加到指定的工具箱选项卡中
然后在工具箱里面找 Windows Media Player 控件,拉到form里面,拉出来的控件就是AxWindowsMediaPlayer了,打开属性窗口,在点击拉过来的控件,可以清楚的看到控件名称为AxWindowsMediaPlayer1

再次,进行player 的编程操作,默认的控件属性介绍如下:

属性/方法名: 说明:
[基本属性]  
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单
fullScreen:boolean; 是否全屏显示
[controls] wmp.controls //播放器基本控制
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
[settings] wmp.settings //播放器基本设置
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数
[currentMedia] wmp.currentMedia //当前媒体属性
currentMedia.duration:double; 媒体总长度
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24”
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息
currentMedia.name:string; 同 currentMedia.getItemInfo("Title")
[currentPlaylist] wmp.currentPlaylist //当前播放列表属性
currentPlaylist.count:integer; 当前播放列表所包含媒体数
currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia

// 创见打开对话框对象实例
            OpenFileDialog openFileDialog = new OpenFileDialog();

//设置为可以打开多个文件
            openFileDialog.Multiselect = true;

//设置打开文件格式
            openFileDialog.Filter = "Mp3文件|*.mp3|Wav文件|*.wav|Wma文件|*.wma|Wmv文件|*.wmv|所有格式|*.*";

//判断是否单击确定按钮
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                //建立播放列表,名字为aa
                axWindowsMediaPlayer1.currentPlaylist = axWindowsMediaPlayer1.newPlaylist("aa", "");

//遍历打开的集合
                foreach (string fn in openFileDialog.FileNames)
                {
                    //添加播放列表
                   axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(fn));
                }
            }
            //播放
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

using System.IO;
using WMPLib;

public videoPlay()
{
InitializeComponent();

//全屏设置及隐藏鼠标
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = FormBorderStyle.None;
//Cursor.Hide();
//播放器全屏
Rectangle screenSize = System.Windows.Forms.SystemInformation.VirtualScreen;//获取屏幕的宽和高
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Size = new System.Drawing.Size(screenSize.Width,screenSize.Height);
this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0);
this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(screenSize.Width, screenSize.Height);
//播放器设置
axWindowsMediaPlayer1.uiMode = "None";//播放器样式
axWindowsMediaPlayer1.stretchToFit = true;//非全屏状态时是否伸展到最佳大小 
axWindowsMediaPlayer1.enableContextMenu = false;//禁用播放器右键菜单

}

private IWMPPlaylist videoList;//创建播放列表
private bool ifLoop = true;//视频是否循环

//设置是否循环播放
public bool IfLoop
{
get { return ifLoop; }
set { ifLoop = value; }
}

//播放状态改变时发生
private void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
{
//判断视频是否已停止播放 
if ((int)axWindowsMediaPlayer1.playState == 1)
{
//停顿2秒钟再重新播放 
//System.Threading.Thread.Sleep(2000);
//重新播放 
//axWindowsMediaPlayer1.Ctlcontrols.play();
}
}
//播放
public void videoStart()
{
axWindowsMediaPlayer1.Ctlcontrols.play();
}
//列表播放
public void videoListStart()
{
videoPlayList();//重新获取播放列表
axWindowsMediaPlayer1.Ctlcontrols.play();
}
//暂停
public void videoPause()
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
}
//重播
public void videoReplay()
{
videoStop();
videoStart();
}
//列表重播
public void videoListReplay()
{
axWindowsMediaPlayer1.currentPlaylist = videoList;//重新载入播放列表
videoStart();
}
//停止播放
public void videoStop() 

//axWindowsMediaPlayer1.currentPlaylist.clear();//清除列表
axWindowsMediaPlayer1.Ctlcontrols.stop();
}
//视频静音
public void videoMute(bool t)
{
axWindowsMediaPlayer1.settings.mute = t;
}
//播放下一个视频
public void videoNext()
{
//判断当前所播放的视频是否是列表的最后一个
if (axWindowsMediaPlayer1.currentMedia.name == axWindowsMediaPlayer1.currentPlaylist.Item[axWindowsMediaPlayer1.currentPlaylist.count - 1].name)
{
}
else
{
axWindowsMediaPlayer1.Ctlcontrols.next();//播放下一个
}
}
//播放上一个媒体
public void videoPrevious()
{ //判断当前所播放的视频是否是列表的第一个
if (axWindowsMediaPlayer1.currentMedia.name == axWindowsMediaPlayer1.currentPlaylist.Item[0].name)
{
}
else
{
axWindowsMediaPlayer1.Ctlcontrols.previous();//播放上一个
}
}

//获取播放类表及初始化
public void videoPlayList() 
{
videoList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("one");//创建播放列表
string path = @".\data\video";//媒体路径
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileSystemInfo fsi in dir.GetFileSystemInfos())
{
if (fsi is FileInfo)
{
FileInfo fi = (FileInfo)fsi;
videoList.appendItem(axWindowsMediaPlayer1.newMedia(fi.FullName));
}
}
axWindowsMediaPlayer1.currentPlaylist = videoList;//查找到视频、播放类表
axWindowsMediaPlayer1.settings.setMode("loop", ifLoop);//设置类表循环播放
}

第三,简单应用实例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WMPLib;

namespace Audio_Player
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            lstFiles.View = View.List;
           AddFilesToolStripMenuItem.Click += AddFilesToolStripMenuItem_Click;
            ExitToolStripMenuItem.Click += ExitToolStripMenuItem_Click;
            HelpToolStripMenuItem.Click += HelpToolStripMenuItem_Click;
            lstFiles.DoubleClick += LstFiles_DoubleClick;

        }

        private void HelpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Audio Player  By  Kevin Lu \r\r" +
                            "Tel: 1234567898");
        }

        private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
            Application.Exit();
        }

        private void AddFilesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //List<string> filePath=new List<string>();
            OpenFileDialog fileDialog=new OpenFileDialog();
            fileDialog.Multiselect = true;
            fileDialog.Filter = "Mp3文件|*.mp3|Wav文件|*.wav|Wma文件|*.wma|Wmv文件|*.wmv|所有格式|*.*";
            if (fileDialog.ShowDialog()==DialogResult.OK)
            {
                axWindowsMediaPlayer1.currentPlaylist = axWindowsMediaPlayer1.newPlaylist("新建列表", "");
                foreach (string filePath in fileDialog.FileNames )
                {
                    ListViewItem lstViewItem=new ListViewItem();
                    lstViewItem.Text = filePath.Substring(filePath.LastIndexOf(‘\\‘) + 1, filePath.Length - filePath.LastIndexOf(‘\\‘) - 1);
                    lstViewItem.SubItems.Add(filePath);
                    lstFiles.Items.Add(lstViewItem);
                   // lstFiles.Items.Add(filePath.Substring(filePath.LastIndexOf(‘\\‘) + 1, filePath.Length - filePath.LastIndexOf(‘\\‘) - 1), filePath);
                    //
                }
            }
           // axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.settings.autoStart = true;
        }

        private void LstFiles_DoubleClick(object sender, EventArgs e)
        {foreach (ListViewItem item in lstFiles.Items)
            {
                axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(item.SubItems[1].Text));
            }
            axWindowsMediaPlayer1.Ctlcontrols.play();
            axWindowsMediaPlayer1.currentPlaylist.clear();
            axWindowsMediaPlayer1.Ctlcontrols.stop();

            if (lstFiles.SelectedItems!=null)
            {
                ListViewItem item = lstFiles.SelectedItems[0];
                axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(item.SubItems[1].Text));
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
        }

        private void 清空列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            lstFiles.Items.Clear();
        }

        private void 单曲循环ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = lstFiles.Items[0].SubItems[1].Text;
            axWindowsMediaPlayer1.settings.playCount = 100000;
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        private void 列表循环播放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (ListViewItem item in lstFiles.Items)
            {
                axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(item.SubItems[1].Text));
            }
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        private void 列表播放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.currentPlaylist.clear();
            foreach (ListViewItem item in lstFiles.Items)
            {
                axWindowsMediaPlayer1.currentPlaylist.appendItem(axWindowsMediaPlayer1.newMedia(item.SubItems[1].Text));
            }
            axWindowsMediaPlayer1.Ctlcontrols.play();

        }

        private void 单曲播放ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.currentPlaylist.clear();
            if (lstFiles.SelectedItems.Count==0)
            {
                axWindowsMediaPlayer1.URL = lstFiles.Items[0].SubItems[1].Text;
            }
            else
            {
                axWindowsMediaPlayer1.URL = lstFiles.SelectedItems[0].SubItems[1].Text;
            }

            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

    }
}

原文地址:https://www.cnblogs.com/wenjie0904/p/10301335.html

时间: 2024-08-24 10:59:30

使用Window 自带的控件 axWindowsMediaPlayer 制作播放器的相关文章

C# axWindowsMediaPlayer制作播放器

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace VideoGoogle {     //选择菜单中的“工具”--“自定义工具箱”,打开“自定义工具箱”窗口,在“

asp.net 自带ajax 控件的小实例

<form id="Form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <asp:Label ID="Label1" runat="server" Text="车牌号:

silverlight visifire控件图表制作——silverlight 后台方法页面事件

1.返回事件 (1.返回silverlight页面,2.返回web页面) private void button_ClickBack(object sender, RoutedEventArgs e)        { 1.返回silverlight页面: this.Content = new BeginControlChart(sTNameClick, strReportDate, false);//增加个参数表名 2.返回web页面 HtmlWindow html = HtmlPage.Wi

silverlight visifire控件图表制作——silverlight 后台方法ControlChart.xaml.cs

一.构造方法ControlChart 1.前台页面控件赋值 //时间下拉框赋值,下拉框赋选定值                for (int ii = DateTime.Today.Year; ii >= 1980; ii--)                {                    string item = string.Format("{0}年", ii.ToString());                    this.dateYear.Items

silverlight visifire控件图表制作——silverlight 静态页面xaml

一.silverlight 静态页面 1. 时间控件:DatePicker ,添加引用: xmlns:sdk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls", 触发事件:SelectedDateChanged: 2.文本:TextBlock : 3.下拉框:ComboBox,触发事件:SelectionChanged : 4.按钮:Button ,触发事件:Click: 5.图表画布:Gr

silverlight visifire控件图表制作——silverlight 后台方法打印

一.后台方法 1.添加引用:using System.Windows.Printing; 2.全局变量://定义图片和文本打印变量  PrintDocument printImage; 3.构造方法体里: //图片打印对象              printImage = new PrintDocument();            //图片打印事件处理              printImage.PrintPage += new EventHandler<PrintPageEventA

silverlight visifire控件图表制作——silverlight 后台方法画图

1.调用wcf 获取信息 private void svc_GetSingleChartDataCompleted(object sender, GetSingleChartDataCompletedEventArgs e) { ObservableCollection<ListItem> lBaseOilBar = e.Result; CreateChart(this.gridVisifire, lBaseOilBar); } 2.构造图表 ,根据解析xml获得的ListItem 画图 pu

浅谈控件(组件)制作方法一(附带一delphi导出数据到Excel的组件实例)(原创)

来自:http://blog.csdn.net/zhdwjie/article/details/1490741 ------------------------------------------------------------------- 从99年学习delphi开始,我就被它的快速开发迷上了,那时候刚接触编程,对可视化开发特别来劲,原因嘛,不外乎是比C更快的实现啦,这几年来,从delphi的C/S到三层B/S,大大小小也写过一些软件,自认为这delphi也就这么些功能吧,自从最近偶得一

数据绑定控件LiisView制作的网站友情链接管理

客户端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FriendLinks.aspx.cs" Inherits="ListView控件的绑定.FriendLinks" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h