使用Mci指令打造你自己的媒體播放器
電子科技大學軟體學院03級 周銀輝
轉載請註明出處
1.說明:
網上mic的文章一大堆,但大多天下文章一大抄。這裡說點實際的,在C#中如何使用它來做個播放器。
2.如何發送指令:
/// <summary>
/// 發送mci指令
/// </summary>
/// <param name="command">要發送的指令</param>
/// <param name="returnString">返回串</param>
/// <param name="returnLength">緩衝區大小</param>
/// <param name="hwndCallBack">回調。一般設定為0</param>
/// <returns></returns>
[DllImport("winmm.dll",EntryPoint="mciSendString", CharSet=CharSet.Auto)]
public static extern int mciSendString(string command, string returnString,
int returnLength, int hwndCallBack);
這裡的參數command就是我們要發送的指令
以後我們都是通過這個mcisendString函數發送指令進行媒體操作
3. 指令是什麼樣的?
比sql語句還有簡單,比如我們的音樂檔案是 path = "c:\\my.mp3",現在我們要發送一條指令開啟該檔案以便以後播放它,那麼我們的指令就是 command = "open \"" +path+ "\"" +" alias song";注意path兩邊要有引號擴起來,這表示它是一個參數(這與命令列參數類似),alias 是取別名,我們將
"c:\\my.mp3"取了一個別名叫做song,這樣我們以後就可以針對song進行操作了
4. 最簡單的: 開啟 -> 播放 -> 關閉
/// <summary>
/// 開啟指定的音樂檔案
/// 開啟時別名為song
/// </summary>
/// <param name="path">檔案的完整路徑</param>
public void Open(string path)
{
if(!File.Exists(path))
{
MessageBox.Show("檔案不存在\n"+path);
return;
}
MciPlayer.mciSendString("close all","",0,0);
MciPlayer.mciSendString("open \"" +path+ "\"" +" alias song", "", 0,0);
}
/// <summary>
/// 從頭播放MciPlayer.Open開啟的檔案,請先確保檔案已經開啟
/// </summary>
public void Play()
{
MciPlayer.mciSendString("play song", "", 0, 0);
}
/// <summary>
/// 停止播放
/// </summary>
public void Stop()
{
MciPlayer.mciSendString("stop song", "", 0, 0);
MciPlayer.mciSendString("close song","", 0, 0);
}
5. 更多的
mci指令很多,包括視頻控制等,可以說是龐雜,但幸運的是你可以在msdn中不使用篩選器,在索引中輸入MCI Command Strings便能尋找到相關的資訊
這是我做的一個簡單的播放器(可使用視訊)
如果需要原始碼的話,可以email: yinhui_zhou@yahoo.com.cn