WmpLib球员.暂停不工作

本文关键字:工作 暂停 球员 WmpLib | 更新日期: 2023-09-27 18:11:05

所以我想在c#中播放一个文件一段时间函数是

void playfile(int duration)
{
  wmp.controls.play();
  Console.WriteLine("control is here");
  System.Threading.Thread.Sleep(duration);
  Console.WriteLine("control is here");
  wmp.controls.pause();
}

通话时播放器启动媒体播放器,但不暂停。"控制在这里"被打印了两次,但玩家没有暂停。但是当我在两个不同的按钮中显示它时,它工作得很好。如:

private void button2_Click(object sender, EventArgs e)
{
  wmp.controls.play();            
}
private void button3_Click(object sender, EventArgs e)
{
  wmp.controls.pause();
}

我想开发一个函数来播放wav文件一段时间,然后停止,然后再播放一段时间,然后再次停止。

WmpLib球员.暂停不工作

这应该对您有所帮助。首先在窗体上放置一个windowsmediaplayer控件,然后处理它的openstatechange事件,在我的代码中,你会看到一个名为duration的变量,你会设置它的值,就像你需要的那样(从上下,文本框....),之后的代码不言自明:

    public partial class Form1 : Form
    {
        Timer t = new Timer();
        int duration = 0;
        public Form1()
        {
            InitializeComponent();
        }
        void t_Tick(object sender, EventArgs e)
        {
            if (axWindowsMediaPlayer1.Ctlcontrols.currentPosition >= duration)
            {
                axWindowsMediaPlayer1.Ctlcontrols.stop();
                duration = 0;//reset it...
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            duration = 10;/* get the value from wherever you need to...*/
            axWindowsMediaPlayer1.URL = @"E:'music'Mike Terrana'Shadows of the Past'01 Pleasure Cube.mp3";
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            t.Interval = 500;
            t.Tick += new EventHandler(t_Tick);
            axWindowsMediaPlayer1.OpenStateChange += new AxWMPLib._WMPOCXEvents_OpenStateChangeEventHandler(axWindowsMediaPlayer1_OpenStateChange);
        }
        void axWindowsMediaPlayer1_OpenStateChange(object sender, AxWMPLib._WMPOCXEvents_OpenStateChangeEvent e)
        {
            if (axWindowsMediaPlayer1.openState == WMPLib.WMPOpenState.wmposMediaOpen)
            {
                t.Start();
            }
        }
    }