2009-11-09 76 views
2

我有這個類我在一個網站上找到:如何使用C#暫停MP3文件?

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庫。如何在播放歌曲時暫停歌曲,然後從暫停的地方繼續播放歌曲?

+0

,做播放,暫停等,使用項目WINMM.DLL:http://www.codeproject.com/KB/audio-video/ Audio_Player__with_Winmm.aspx – 2009-11-09 23:58:35

回答

2

This CodeProject上的文章包含處理的WINMM.DLL庫的功能,包括暫停5類,並可以爲這個和是有幫助未來。

的基本代碼,卻是:

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

這裏是所有的Multimedia Command Strings

我看到pauseresume命令都包含:

暫停命令暫停播放或記錄 。大多數驅動程序保留 當前位置,並最終在此 位置恢復 播放或錄製。 CD音頻,數字視頻, MIDI音序器,VCR,videodisc和 波形音頻設備識別此 命令。

恢復命令繼續播放 或記錄已 使用暫停命令暫停的設備上。數字視頻,VCR和波形音頻 設備識別此命令。 儘管CD音頻,MIDI音序器和 videodisc設備也可以識別此 命令,但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; 
    } 
}