fa_search
دوشنبه 09 خرداد 1390, 14:22 عصر
سلام . چند وقت پيش سوالي پرسيدم درمورد كار با فايل mp3 در برنامه . بالاخره تونستم برنامه رو بنويسم . كد برنامه رو ميزارم كه شما هم بتونيد استفاده كنيد .
موفق باشيد
using System;
using System.IO; // directory
using System.Runtime.InteropServices; // play mp3
using System.Text;
using System.Windows.Forms;
using System.Collections.Generic;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//* play mp3
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
private StringBuilder sBuffer = new StringBuilder(128);
private int seconds;
private int Fstatus=0 ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.bookDetailsTableAdapter.Fill(this.libmp3DataS et.BookDetails);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
AddBook(@"c:\");
}
public void AddBook(string s)
{
bookDetailsTableAdapter.Insert("bbbbbb", "book", "mo", "1", s , " 1", "1", "", "__");
this.bookDetailsTableAdapter.Fill(this.libmp3DataS et.BookDetails);
}
private void button3_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string[] Direct = Directory.GetDirectories(folderBrowserDialog1.Sele ctedPath );
if (Direct.Length > 0)
{
for (int i = 0; i < Direct.Length; i += 1)
{
EndDirect(Direct[i]);
}
}
}
}
private void EndDirect(string SPath)
{
string[] Direct = Directory.GetDirectories(SPath);
if (Direct.Length > 0)
{
for (int i = 0; i < Direct.Length; i += 1)
{
EndDirect(Direct[i] );
}
}
else
AddBook(SPath);
}
private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
this.bookDetailsTableAdapter.Update(this.libmp3Dat aSet.BookDetails);
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
ListViwe_File(e.RowIndex);
}
private void ListViwe_File(int rowNo)
{
string mp3Name = dataGridView1[1, rowNo].Value.ToString();
if (mp3Name.Length > 0)
{
listView1.Clear();
int lenDirect = mp3Name.Length;
string[] files = Directory.GetFiles(dataGridView1[1, rowNo].Value.ToString(), "*.mp3");
if (files.Length > 0)
{
listView1.Visible = true;
for (int i = 0; (i < files.Length); i++)
{
mp3Name = files[i];
mp3Name = mp3Name.Substring(lenDirect, mp3Name.Length - lenDirect);
listView1.Items.Add(mp3Name);
}
listView1.Focus();
}
else MessageBox.Show("در اين مسير فايل صوتي موجود نمي باشد ");
}
}
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
listView1.Visible = false;
}
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space )
{
if (Fstatus == 1)
{
mciSendString("pause MediaFile", null, 0, IntPtr.Zero);
Fstatus = 2;
}
else if (Fstatus == 2)
{
mciSendString("Resume MediaFile", null, 0, IntPtr.Zero);
Fstatus = 1;
}
}
else if (e.KeyCode == Keys.Escape)
{
dataGridView1.Focus();
listView1.Visible = false;
Stpmp3();
}
else if (e.KeyCode == Keys.Right )
{
NextSeconds();
}
else if (e.KeyCode == Keys.Left )
{
pRESeconds();
}
}
private void plymp3()
{
string AddMp3;
Stpmp3();
AddMp3 = dataGridView1[1, dataGridView1.CurrentRow.Index-1].Value.ToString() + listView1.SelectedItems[0].Text; // @"E:\Music\Ba_Oon_Ghad_O_Ghamat.mp3";
mciSendString("open \"" + AddMp3 + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile", null, 0, IntPtr.Zero);
Fstatus = 1;
}
private void Stpmp3()
{
mciSendString("close MediaFile", null, 0, IntPtr.Zero);
Fstatus = 0;
}
private void listView1_ItemActivate(object sender, EventArgs e)
{
plymp3();
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
ListViwe_File(dataGridView1.CurrentRow.Index-1);
}
private void NextSeconds()
{
mciSendString("status MediaFile position", sBuffer, sBuffer.Capacity, IntPtr.Zero);
seconds = int.Parse(sBuffer.ToString());
seconds = seconds + 10000;
mciSendString("play MediaFile from " + seconds.ToString(), null, 128, IntPtr.Zero);
}
private void pRESeconds()
{
mciSendString("status MediaFile position", sBuffer, sBuffer.Capacity, IntPtr.Zero);
seconds = int.Parse(sBuffer.ToString());
seconds = seconds - 10000;
mciSendString("play MediaFile from " + seconds.ToString(), null, 128, IntPtr.Zero);
}
}
}
موفق باشيد
using System;
using System.IO; // directory
using System.Runtime.InteropServices; // play mp3
using System.Text;
using System.Windows.Forms;
using System.Collections.Generic;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//* play mp3
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
private StringBuilder sBuffer = new StringBuilder(128);
private int seconds;
private int Fstatus=0 ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.bookDetailsTableAdapter.Fill(this.libmp3DataS et.BookDetails);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
AddBook(@"c:\");
}
public void AddBook(string s)
{
bookDetailsTableAdapter.Insert("bbbbbb", "book", "mo", "1", s , " 1", "1", "", "__");
this.bookDetailsTableAdapter.Fill(this.libmp3DataS et.BookDetails);
}
private void button3_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string[] Direct = Directory.GetDirectories(folderBrowserDialog1.Sele ctedPath );
if (Direct.Length > 0)
{
for (int i = 0; i < Direct.Length; i += 1)
{
EndDirect(Direct[i]);
}
}
}
}
private void EndDirect(string SPath)
{
string[] Direct = Directory.GetDirectories(SPath);
if (Direct.Length > 0)
{
for (int i = 0; i < Direct.Length; i += 1)
{
EndDirect(Direct[i] );
}
}
else
AddBook(SPath);
}
private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
this.bookDetailsTableAdapter.Update(this.libmp3Dat aSet.BookDetails);
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
ListViwe_File(e.RowIndex);
}
private void ListViwe_File(int rowNo)
{
string mp3Name = dataGridView1[1, rowNo].Value.ToString();
if (mp3Name.Length > 0)
{
listView1.Clear();
int lenDirect = mp3Name.Length;
string[] files = Directory.GetFiles(dataGridView1[1, rowNo].Value.ToString(), "*.mp3");
if (files.Length > 0)
{
listView1.Visible = true;
for (int i = 0; (i < files.Length); i++)
{
mp3Name = files[i];
mp3Name = mp3Name.Substring(lenDirect, mp3Name.Length - lenDirect);
listView1.Items.Add(mp3Name);
}
listView1.Focus();
}
else MessageBox.Show("در اين مسير فايل صوتي موجود نمي باشد ");
}
}
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
listView1.Visible = false;
}
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space )
{
if (Fstatus == 1)
{
mciSendString("pause MediaFile", null, 0, IntPtr.Zero);
Fstatus = 2;
}
else if (Fstatus == 2)
{
mciSendString("Resume MediaFile", null, 0, IntPtr.Zero);
Fstatus = 1;
}
}
else if (e.KeyCode == Keys.Escape)
{
dataGridView1.Focus();
listView1.Visible = false;
Stpmp3();
}
else if (e.KeyCode == Keys.Right )
{
NextSeconds();
}
else if (e.KeyCode == Keys.Left )
{
pRESeconds();
}
}
private void plymp3()
{
string AddMp3;
Stpmp3();
AddMp3 = dataGridView1[1, dataGridView1.CurrentRow.Index-1].Value.ToString() + listView1.SelectedItems[0].Text; // @"E:\Music\Ba_Oon_Ghad_O_Ghamat.mp3";
mciSendString("open \"" + AddMp3 + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile", null, 0, IntPtr.Zero);
Fstatus = 1;
}
private void Stpmp3()
{
mciSendString("close MediaFile", null, 0, IntPtr.Zero);
Fstatus = 0;
}
private void listView1_ItemActivate(object sender, EventArgs e)
{
plymp3();
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
ListViwe_File(dataGridView1.CurrentRow.Index-1);
}
private void NextSeconds()
{
mciSendString("status MediaFile position", sBuffer, sBuffer.Capacity, IntPtr.Zero);
seconds = int.Parse(sBuffer.ToString());
seconds = seconds + 10000;
mciSendString("play MediaFile from " + seconds.ToString(), null, 128, IntPtr.Zero);
}
private void pRESeconds()
{
mciSendString("status MediaFile position", sBuffer, sBuffer.Capacity, IntPtr.Zero);
seconds = int.Parse(sBuffer.ToString());
seconds = seconds - 10000;
mciSendString("play MediaFile from " + seconds.ToString(), null, 128, IntPtr.Zero);
}
}
}