PDA

View Full Version : پخش آهنگ بر اساس آیتم های لیست باکس



mmzz91
دوشنبه 28 مهر 1393, 22:59 عصر
سلام من یک لیست باکس دارم با چندین آیتم میخوام با کلیک روی هریک از آیتم ها، آهنگی که مد نظر هست پخش بشه

RIG000
سه شنبه 29 مهر 1393, 01:12 صبح
از startpath و enverioment کمک بگیر

mmzz91
سه شنبه 29 مهر 1393, 06:14 صبح
از startpath و enverioment کمک بگیر

لطفا کامل تر اگه امکان داره یا نمونه کد بزارین.ممنون

RIG000
سه شنبه 29 مهر 1393, 17:07 عصر
private class MusicPlayer {
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, int hwndCallback);


public void open(string file)
{
string command = "open \"" + file + "\" type MPEGVideo alias MyMp3";
mciSendString(command, null, 0, 0);
}


public void play()
{
string command = "play MyMp3";
mciSendString(command, null, 0, 0);
}


public void stop()
{
string command = "stop MyMp3";
mciSendString(command, null, 0, 0);


command = "close MyMp3";
mciSendString(command, null, 0, 0);
}
}
MusicPlayer player = new MusicPlayer();
private void listBox1_DoubleClick(object sender, EventArgs e)
{


string selectsong = listBox1.SelectedItem.ToString();
player.stop();
player.open(selectsong);
player.play();

}

mmzz91
چهارشنبه 30 مهر 1393, 22:38 عصر
ممنونم اما این کد را کجا باید نوشت.و آیا کامپونت داره یا نه

RIG000
پنج شنبه 01 آبان 1393, 02:08 صبح
private class MusicPlayer { [DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, int hwndCallback);


public void open(string file)
{
string command = "open \"" + file + "\" type MPEGVideo alias MyMp3";
mciSendString(command, null, 0, 0);
}


public void play()
{
string command = "play MyMp3";
mciSendString(command, null, 0, 0);
}


public void stop()
{
string command = "stop MyMp3";
mciSendString(command, null, 0, 0);


command = "close MyMp3";
mciSendString(command, null, 0, 0);
}
}
این یه کلاسه .....
و اینم شیی از کلاس می سازیم

MusicPlayer player = new MusicPlayer();

و اینم لسیت باکس ما ... که تو ایونت دابل کلیکش اینو نموشتم.... که

private void listBox1_DoubleClick(object sender, EventArgs e) {


string selectsong = listBox1.SelectedItem.ToString();
player.stop();
player.open(selectsong);
player.play();

}
اینم باتونی که یادم رفته بود کدش رو بذارم اینجا...
با این میتونی بری یه اهنگ رو انتخاب کنی و میاد تو لیست باکست. بعد تو لیست باکس رو اسم اهنگ دو بار کلیک کنی اجرا میشه ...

private void btnconnect_Click(object sender, EventArgs e) {

this.listBox1.Items.Clear();


openFileDialog1.Filter = "Text Document|*.mp3|All Files|*.*";


if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
listBox1.Items.AddRange(openFileDialog1.FileNames) ;
}
}
به برنامه خودت هم یه openfile dialog اضافه کن....

mmzz91
پنج شنبه 01 آبان 1393, 10:54 صبح
ممنونم. از پاسخ کاملتون.اما مشکل من اینه که اسامی آهنگ ها در لیست باکس هست و خود آهنگ ها در یک پوشه در پروژه است حالا میخوام با کلیک روی هر اسم توی لیست باکس آهنگ مربوطه پخش بشه

RIG000
پنج شنبه 01 آبان 1393, 11:22 صبح
دوست عزیز شما فقط اسامی اهنگ ها رو تو لیست باکس داشته باش.
مثل
E:\Music\71.mp3
E:\Music\Ahmad Saeedi - Ba To.mp3
اینا تو لیست باکس هستن. حالا تو میخای بریز تو متغییر بذار اینجا و ...
کد ها همونن . فقط دکمه باتون رو دیگه لازم نیست بذاری ...

private class MusicPlayer
{
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, int hwndCallback);


public void open(string file)
{
string command = "open \"" + file + "\" type MPEGVideo alias MyMp3";
mciSendString(command, null, 0, 0);
}


public void play()
{
string command = "play MyMp3";
mciSendString(command, null, 0, 0);
}


public void stop()
{
string command = "stop MyMp3";
mciSendString(command, null, 0, 0);


command = "close MyMp3";
mciSendString(command, null, 0, 0);
}
}
MusicPlayer player = new MusicPlayer();

و اینم تو لیست باکس تو هر ایونتی میخای بنویسی بنویس... حالا کلیک یا دابل کلیک و ...

string selectsong = listBox1.SelectedItem.ToString();
player.stop();
player.open(selectsong);
player.play();

mmzz91
جمعه 02 آبان 1393, 20:05 عصر
دوست عزیز شما فقط اسامی اهنگ ها رو تو لیست باکس داشته باش.
مثل
E:\Music\71.mp3
E:\Music\Ahmad Saeedi - Ba To.mp3
اینا تو لیست باکس هستن. حالا تو میخای بریز تو متغییر بذار اینجا و ...
کد ها همونن . فقط دکمه باتون رو دیگه لازم نیست بذاری ...

private class MusicPlayer
{
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, int hwndCallback);


public void open(string file)
{
string command = "open \"" + file + "\" type MPEGVideo alias MyMp3";
mciSendString(command, null, 0, 0);
}


public void play()
{
string command = "play MyMp3";
mciSendString(command, null, 0, 0);
}


public void stop()
{
string command = "stop MyMp3";
mciSendString(command, null, 0, 0);


command = "close MyMp3";
mciSendString(command, null, 0, 0);
}
}
MusicPlayer player = new MusicPlayer();

و اینم تو لیست باکس تو هر ایونتی میخای بنویسی بنویس... حالا کلیک یا دابل کلیک و ...

string selectsong = listBox1.SelectedItem.ToString();
player.stop();
player.open(selectsong);
player.play();
سلام و تشکر. نمیشه به جای آدرس آهنگ در لیست باکس یک اسم دلخواه گذاشت

RIG000
جمعه 02 آبان 1393, 20:47 عصر
گفتم ادرس رو بریز تو یه تک استریگ اونو ادد کن به لسیت باکس....

mmzz91
جمعه 02 آبان 1393, 23:41 عصر
شرمنده من مبتدی هستم .یک مثال برای این مورد هم بزارین

RIG000
شنبه 03 آبان 1393, 05:48 صبح
private void listBox1_DoubleClick(object sender, EventArgs e) {
if ( listBox1.SelectedItem.ToString()=="sadeghi" )
{
string selectsong = @"E:\Music\71.mp3";
player.stop();
player.open(selectsong);
player.play();
}
else if (listBox1.SelectedItem.ToString()=="saaidi")
{
string selectsong = @"E:\Music\Ahmad Saeedi - Ba To.mp3";
player.stop();
player.open(selectsong);
player.play();
}




}
اینم اینجوری بنویس. منم مبتدی مثل خودت . سخت میگیریا...

mmzz91
شنبه 03 آبان 1393, 23:35 عصر
خوب عزیز مشکل برطرف شد.ممنون
فقط من تعداد آیتم های لیست باکسم بالای 100 عدد است این جوری که مشکله ؟؟

systam
یک شنبه 04 آبان 1393, 00:11 صبح
این پست رو نگاه کن من قبلا همچیم کار رو کردم (http://barnamenevis.org/showthread.php?69916-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7-%D9%88-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA%D 9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA&p=1997896&viewfull=1#post1997896)

mmzz91
یک شنبه 04 آبان 1393, 07:13 صبح
این پست رو نگاه کن من قبلا همچیم کار رو کردم (http://barnamenevis.org/showthread.php?69916-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7-%D9%88-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA%D 9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA&p=1997896&viewfull=1#post1997896)
معذرت ولی من . مشکلم:
فقط من تعداد آیتم های لیست باکسم بالای 100 عدد است این جوری که مشکله ؟؟

mmzz91
یک شنبه 04 آبان 1393, 19:25 عصر
private void listBox1_DoubleClick(object sender, EventArgs e) {
if ( listBox1.SelectedItem.ToString()=="sadeghi" )
{
string selectsong = @"E:\Music\71.mp3";
player.stop();
player.open(selectsong);
player.play();
}
else if (listBox1.SelectedItem.ToString()=="saaidi")
{
string selectsong = @"E:\Music\Ahmad Saeedi - Ba To.mp3";
player.stop();
player.open(selectsong);
player.play();
}




}
اینم اینجوری بنویس. منم مبتدی مثل خودت . سخت میگیریا...

فقط من تعداد آیتم های لیست باکسم بالای 100 عدد است این جوری که مشکله ؟؟

pedram.11
یک شنبه 04 آبان 1393, 20:48 عصر
سلام
124981

ابتدا دگمه لود رو بزنید و آدرس پوشه آهنگارو بدید. بعدش با دابل کلیک روی هر آیتم آهنگش پخش میشه.
پروژه:

mmzz91
دوشنبه 05 آبان 1393, 23:30 عصر
آیتم های من به تعداد زیاد و با نام مشخص در لیست باکس هست فقط میخوام با کلیک روی هر آیتم آهنگ مخصوص که در پوشه برنامه است پخش بشه .مشکل برای تعداد زیاده...

pedram.11
دوشنبه 05 آبان 1393, 23:53 عصر
تعداد زیاد... آیا بیشتر از 5000 آیتمه؟ من با بیشتر از 5000 آهنگ تست کردم که مشکلی نداشت... شما اگه اروری یا مشکلی دارید که مشخصه بفرمائید تا چاره ای پیدا کنیم :متفکر:

mmzz91
سه شنبه 06 آبان 1393, 00:00 صبح
[QUOTE=pedram.11;2124551]تعداد زیاد... آیا بیشتر از 5000 آیتمه؟ من با بیشتر از 5000 آهنگ تست کردم که مشکلی نداشت... شما اگه اروری یا مشکلی دارید که مشخصه بفرمائید تا چاره ای پیدا کنیم :متفکر:
شما مثل اینکه منظور منو نفهمیدید من نمیخوام آدرس ها در لیست باکس باشه بلکه نام های در لیست باکس هست و من میخوام با کلیک روی هر نام بدون انتخاب آهنگ ،آهنگ هایی که در پوشه پروژه هست به تعداد نام های داخل لیست باکی پخش بشه
مثلا نام اول= آهنگ 1
نام دوم= آهنگ دوم
....

pedram.11
سه شنبه 06 آبان 1393, 00:14 صبح
خب زودتر میگفتی دوست عزیز
با کمی تغییر:
125042

pedram.11
سه شنبه 06 آبان 1393, 00:44 صبح
ببخشید پروژه یادم رفت :لبخند:

mmzz91
سه شنبه 06 آبان 1393, 20:22 عصر
خب زودتر میگفتی دوست عزیز
با کمی تغییر:
125042
آقا ممنون. اما سخن من اینه که نمی خوام دکمه لودینگ باشه از قبل در لیست باکس نام ها وجود دارند بدون پسوند mp3 من میخوام فقط با کلیک روی هر نام یک آهنگ از پوشه ای که در داخل برنامه قرار دادم باز بشه

abdullah20
سه شنبه 06 آبان 1393, 20:31 عصر
دوست عزیز فرض کنید در پوشه شما اهنگ های زیر وجود دارند:
music1.mp3
music2.mp3

حالا می خواید با نمایش فرم نام های زیر در لیست باکس نماش داده بشه
music1
music2

و با کلیک روی music1 اهنگ music1.mp3 پخش بشه درسته؟

mmzz91
سه شنبه 06 آبان 1393, 20:33 عصر
دوست عزیز فرض کنید در پوشه شما اهنگ های زیر وجود دارند:
music1.mp3
music2.mp3

حالا می خواید با نمایش فرم نام های زیر در لیست باکس نماش داده بشه
music1
music2

و با کلیک روی music1 اهنگ music1.mp3 پخش بشه درسته؟

بله درسته فقط تعداد آهنگ ها و نام ها زیاد است.ممنون

abdullah20
سه شنبه 06 آبان 1393, 20:46 عصر
یعنی مشکل با کد نویسی ندارید و مشکلتون زیاد بودن تعداد اهنگ ها است؟

mmzz91
سه شنبه 06 آبان 1393, 20:51 عصر
یعنی مشکل با کد نویسی ندارید و مشکلتون زیاد بودن تعداد اهنگ ها است؟
چرا هم کد نویسی و هم تعداد زیاد مشکل من است
با این کد دوستمون مشکل حل میشه
private void listBox1_DoubleClick(object sender, EventArgs e) {
if ( listBox1.SelectedItem.ToString()=="sadeghi" )
{
string selectsong = @"E:\Music\71.mp3";
player.stop();
player.open(selectsong);
player.play();
}
else if (listBox1.SelectedItem.ToString()=="saaidi")
{
string selectsong = @"E:\Music\Ahmad Saeedi - Ba To.mp3";
player.stop();
player.open(selectsong);
player.play();
}

اما مثلا برای 100 نام و آهنگ نمیشه این قدر کد نوشت

abdullah20
سه شنبه 06 آبان 1393, 21:37 عصر
فقط یه نکته (داخل پست اول هم گفتم )
نام های داخل لیست باکس همون نام های اهنگهای داخل پوشه هستند منهای پسوندشون دیگه ؟درسته؟

mmzz91
سه شنبه 06 آبان 1393, 21:40 عصر
فقط یه نکته (داخل پست اول هم گفتم )
نام های داخل لیست باکس همون نام های اهنگهای داخل پوشه هستند منهای پسوندشون دیگه ؟درسته؟

بله درسته.
اما نمیشه نام ها را چیز دیگه انتخاب کرد مثلا نام فارسی اگه نمیشه با همون نام ها .کمک کنید

abdullah20
سه شنبه 06 آبان 1393, 21:56 عصر
این که خیلی ساده است
متعجب هستم
هر دو حالت میشه
نام خود اهنگ و انتخاب نام دیگر

mmzz91
سه شنبه 06 آبان 1393, 22:00 عصر
این که خیلی ساده است
متعجب هستم
هر دو حالت میشه
نام خود اهنگ و انتخاب نام دیگر

ممنون.خوب یک نمونه کد بزارین با همون تعداد زیاد

abdullah20
سه شنبه 06 آبان 1393, 22:07 عصر
DirectoryInfo dinfo = new DirectoryInfo("FolderMusic");
FileInfo[] Files;
private void Form1_Load(object sender, EventArgs e)
{
Files = dinfo.GetFiles();
foreach (FileInfo file in Files)
listBox1.Items.Add(Path.GetFileNameWithoutExtensio n(file.Name));
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if(listBox1.SelectedItems.Count >0 )
axWindowsMediaPlayer1.URL = Files
[listBox1.SelectedIndex].FullName;
}

mmzz91
چهارشنبه 07 آبان 1393, 14:31 عصر
ممنون درست شد