Đăng bởi : Duy Bui
4/13/2014
Như chúng ta đã biết thư viện "System.Media" chỉ cho phép chạy file âm thanh ".wav" nhiều chúng ta chạy file MP3 rất khó khăn (làm một chương trình phát nhac đơn giản chẳng hạn -- không dùng dll của Windows Media đâu nhé)
Hôm nay mình sẽ hướng dẫn các bạn sử dụng API để chạy file MP3 trong C#.
Các bước như sau :
1. Đừng quên "using System.Runtime.InteropServices;" để sử dụng API nhé.
2. Import Dll "winmm.dll"
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
Hàm API này không hẳn có chức năng chạy MP3 mà nó là 1 hàm cho phép thực hiện câu lệnh được Coder đưa vào qua 1 string là strCommad . như vậy parameters này là quan trọng nhất (và mình cũng không biết các param khác có chức năng gì -- thôi thì cứ null -- API thường vậy mà HIHI ^^)
3. Giới thiệu các Commad để chạy 1 file MP3
- Mở MP3 : "open "Đường dẫn tới file mp3" type mpegvideo alias MediaFile"
ví dụ : "open "E:\MUSIC\nhac.mp3" type mpegvideo alias MediaFile"
- Chạy MP3 vừa mở : "play MediaFile"
Có thể dùng "play MediaFile REPEAT" để phát đi phát lại file MP3 vừa mở
- Dừng MP3 : "close MediaFile"
Nếu chưa làm được hãy xem ví dụ này :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace MP3// Import Dll này vô
{
public partial class Form1 : Form
{
public bool isOpen = false;
public Form1()
{
InitializeComponent();
}
[DllImport("winmm.dll")]'
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
// BUTTON PLAY MP3
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "MP3 (*.mp3)|*.mp3";
if (op.ShowDialog() == DialogResult.OK)
{
string szFile = op.FileName;
MP3Open(szFile);
Mp3Play(false);
}
}
// BUTTON STOP MP3
private void button2_Click(object sender, EventArgs e)
{
Mp3Close();
}
// PHẦN XỬ LÍ ----------------------------------------------------------------------------------
public void MP3Open(string szFileName)
{
string szCommad = "open \"" + szFileName + "\" type mpegvideo alias MediaFile";
MessageBox.Show(szCommad);
mciSendString(szCommand, null, 0, IntPtr.Zero);
isOpen = true;
}
public void Mp3Close()
{
string szCommand = "close MediaFile";
mciSendString(szCommand, null, 0, IntPtr.Zero);
isOpen = false;
}
public void Mp3Play(bool isLoop)
{
if (isOpen)
{
string szCommand = "play MediaFile";
if (isLoop) szCommand += " REPEAT";
mciSendString(szCommand, null, 0, IntPtr.Zero);
}
}
}
}
Kết hợp vào trong quản lí file được như này đây@!
ReplyDeletehttps://www.dropbox.com/s/cmh2lth3xtiflhn/Net3.0-MiniExplorer.rar
bác ơi cho em xin lại link đc không
DeleteĐúng lúc cần :D
ReplyDeleteTrong cai hàm này:
ReplyDeletepublic void MP3Open(string szFileName)
{
string szCommad = "open \"" + szFileName + "\" type mpegvideo alias MediaFile";
MessageBox.Show(szCommad);
mciSendString(szCommand, null, 0, IntPtr.Zero);
isOpen = true;
}
em bị lỗi szConmand does not exit in curent text.
Lỗi này do đâu và xử lý thế nào các bác?
string szCommad =@"open \"" + szFileName + "\" type mpegvideo alias MediaFile";
Delete