如何使用C#暂停MP3文件?

时间:2009-11-09 23:50:42

标签: c# audio

我在网站上找到了这门课程:

class MP3Handler
{
    private string _command;
    private bool isOpen;
    [DllImport("winmm.dll")]

    private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

    public void Close()
    {
        _command = "close MediaFile";
        mciSendString(_command, null, 0, IntPtr.Zero);
        isOpen = false;
    }

    public void Open(string sFileName)
    {
        _command = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
        mciSendString(_command, null, 0, IntPtr.Zero);
        isOpen = true;
    }

    public void Play(bool loop)
    {
        if (isOpen)
        {
            _command = "play MediaFile";
            if (loop)
                _command += " REPEAT";
            mciSendString(_command, null, 0, IntPtr.Zero);
        }
    }
}

是否有停止和播放的方法。我想知道是否有人熟悉winmm.dll库。如何在播放时暂停播放歌曲,然后从暂停播放的位置继续播放?

2 个答案:

答案 0 :(得分:2)

This CodeProject文章包含一个类,它可以处理winmm.dll库的功能,包括暂停,可能对此以及将来有所帮助。

然而,基本代码是:

    _command = "pause MediaFile";
    mciSendString(_command, null, 0, IntPtr.Zero);

答案 1 :(得分:0)

以下是所有Multimedia Command Strings

我看到包含pauseresume命令:

  

暂停命令暂停播放或   记录。大多数司机保留了   当前的位置,并最终恢复   播放或录制此内容   位置。 CD音频,数字视频,   MIDI音序器,录像机,视频盘和   波形音频设备识别这一点   命令。

     

恢复命令继续播放   或者在已经存在的设备上录制   暂停使用pause命令暂停。   数字视频,VCR和波形音频   设备识别此命令。   虽然CD音频,MIDI音序器和   视频设备也认识到了这一点   命令,MCICDA,MCISEQ和   MCIPIONR设备驱动程序不支持   它

所以我猜你会:

bool isPaused = false;

public void Pause() {
    if (isOpen && !isPaused) {
        _command = "pause MediaFile";
        mciSendString(_command, null, 0, IntPtr.Zero);
        isPaused = true;
    }
}

public void Resume() {
    if (isOpen && isPaused) {
        _command = "resume MediaFile";
        mciSendString(_command, null, 0, IntPtr.Zero);
        isPaused = false;
    }
}