如何使用Quartz库播放MP3歌曲文件

来源:互联网 发布:日语网络培训班 编辑:程序博客网 时间:2024/05/16 01:13
此编程方法主要是使用Quartz苦的未托管QuartzTypeLid.IMediaControl组件播放MP3文件。在使用该组件之前,首先应该在程序项目中添加“[windowsDir]/System32/quartz.dll”引用。实现该技巧的主要源代码如下:
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {//播放MP3歌曲文件
            string MyFileName = Application.StartupPath+"//After.mp3";
            // 访问IMediaControl接口
            QuartzTypeLib.FilgraphManager graphManager =new QuartzTypeLib.FilgraphManager();
            QuartzTypeLib.IMediaControl MyControl=(QuartzTypeLib.IMediaControl)graphManager;
            MyControl.RenderFile(MyFileName);
            // 异步播放
            MyControl.Run();
            //停止
            //MyControl.Stop();
        }
        private const int WM_APP = 0x8000;
        private const int WM_GRAPHNOTIFY = WM_APP + 1;
        private const int EC_COMPLETE = 0x01;
        private const int WS_CHILD = 0x40000000;
        private const int WS_CLIPCHILDREN = 0x2000000;
        private QuartzTypeLib.IMediaControl MyControl = null;
        private QuartzTypeLib.IVideoWindow MyWindow = null;
        private void button2_Click(object sender, EventArgs e)
        {//播放MPG视频文件
            OpenFileDialog MyDialog = new OpenFileDialog();
            MyDialog.Filter ="Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*";
            if (DialogResult.OK == MyDialog.ShowDialog())
            {
                if (MyControl != null) MyControl.Stop();
                QuartzTypeLib.FilgraphManager MyManager = new QuartzTypeLib.FilgraphManager();
                MyManager.RenderFile(MyDialog.FileName);
                try
                {
                    MyWindow = (QuartzTypeLib.IVideoWindow)MyManager;
                    MyWindow.Owner = (int)pictureBox1.Handle;
                    MyWindow.WindowStyle = WS_CHILD | WS_CLIPCHILDREN;
                    MyWindow.SetWindowPosition(
                      pictureBox1.ClientRectangle.Left,
                      pictureBox1.ClientRectangle.Top,
                      pictureBox1.ClientRectangle.Width,
                      pictureBox1.ClientRectangle.Height);
                }
                catch
                {
                }
                MyControl = (QuartzTypeLib.IMediaControl)MyManager;
                MyControl.Run();
            }
        }
    }
}
原创粉丝点击