PDA

View Full Version : سوال: پخش آهنگ بدون استفاده از مدیا پلیر



012132
یک شنبه 29 اردیبهشت 1392, 00:56 صبح
با سلام . آیا میشه بدون استفاده از axwindowsmedia ، (یا همون کامپوننت مدیا پلیر) آهنگ پخش کرد ؟

البته با فرمت MP3 . اگه امکانش هست ممنون میشم راهنماییم کنید . ممنون

Mahmoud.Afrad
یک شنبه 29 اردیبهشت 1392, 09:56 صبح
public class MP3Player
{
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);
}
}
}

012132
دوشنبه 30 اردیبهشت 1392, 14:34 عصر
ممنون از راهنماییتون . اما وقتی این کد رو توی کلاس کپی می کنم ، خط زیر رو ارور میگیره :


[DllImport("winmm.dll")]

آیا باید رفرنسی اضافه کنم ؟ اگه ممکنه یه مثال attach می کردید ، خیلی خوب میشد !

danialafshari
دوشنبه 30 اردیبهشت 1392, 16:42 عصر
using System.Runtime.InteropServices;

012132
دوشنبه 30 اردیبهشت 1392, 20:14 عصر
خیلی ممنون از راهنمایی شما . من برای پخش آهنگ های تک مشکلی ندارم ، اما برای پخش چند آهنگ مشکل دارم .
می خوام ، اسم اهنگ هایی که با file dialog انتخاب کردم رو توی لیست باکس نمایش بدم . به همین جهت هم این کد رو نوشتم .

listBox1.Items.Add(openFileDialog1.FileNames.ToStr ing());
اما توی لیست باکس این کد رو بهم میده .

system.string[] فکر کنم میگه باید اندیس بدی ، اما من بلد نیستم .
لطفاً راهنماییم کنید .

vb-sosol
سه شنبه 20 اسفند 1392, 11:02 صبح
public class MP3Player
{
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);
}
}
}


نحوه استفادهش چطوریه؟ :متفکر:

vb-sosol
چهارشنبه 21 اسفند 1392, 09:28 صبح
کسی نمیدونه؟

mehrdad1991h
چهارشنبه 21 اسفند 1392, 10:06 صبح
کسی نمیدونه؟

خسته نباشید
بابا نوشته برات که همش را

public void Open(string sFileName) {
_command = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
mciSendString(_command, null, 0, IntPtr.Zero);
isOpen = true;
}



sFileName ادرس فایلی هست که شما میخوای پخش بشه دیگه
استفاده میشه اینجوری مثلا
مثلا شما یک دکمه داری وقتی روش کلیک میکنی اینجوری میشه
این کد زیر کد همون دکمه باید باشه

private void button1_Click(object sender, EventArgs e)
{
Open(@"C:/myfile.mp3");
}

برای play و Stop هم اینجوری میشه
رو دکمه کلیک میکنی داخلش این کد را میزاری
برای play
Play(true);
برای Stop
Play(false);

برای بستنش هم اینجوریه

Close();

mehrdad1991h
چهارشنبه 21 اسفند 1392, 10:20 صبح
خیلی ممنون از راهنمایی شما . من برای پخش آهنگ های تک مشکلی ندارم ، اما برای پخش چند آهنگ مشکل دارم .
می خوام ، اسم اهنگ هایی که با file dialog انتخاب کردم رو توی لیست باکس نمایش بدم . به همین جهت هم این کد رو نوشتم .

listBox1.Items.Add(openFileDialog1.FileNames.ToStr ing());
اما توی لیست باکس این کد رو بهم میده .

system.string[] فکر کنم میگه باید اندیس بدی ، اما من بلد نیستم .
لطفاً راهنماییم کنید .

اول این که شما اومدی همه را به رشته تبدیل کردی !
بعد اول از همه این که فایل دیالوگت باید پروپرتی مولتی سلکشنش ترو باشه
بعد باید به صورت رنج اضافه کنی
یعنی اینجوری
listBox1.Items.AddRange(openFileDialog1.FileNames) ;
فایل نیمز خودش لیست از فایل هایی هست که شما انتخاب کردی چجوری میخوای به یدونه رشته تبدیلش کنی ؟ خوب باید ایندکس اون یدونه را بگذاری بعدش حالا به رشته هم تبدیل شد باز میشه 1 دونه که...
نمیدونم کد را ببین متوجه میشی

vb-sosol
چهارشنبه 21 اسفند 1392, 10:28 صبح
خسته نباشید
بابا نوشته برات که همش را

public void Open(string sFileName) {
_command = "open \"" + sFileName + "\" type mpegvideo alias MediaFile";
mciSendString(_command, null, 0, IntPtr.Zero);
isOpen = true;
}



sFileName ادرس فایلی هست که شما میخوای پخش بشه دیگه
استفاده میشه اینجوری مثلا
مثلا شما یک دکمه داری وقتی روش کلیک میکنی اینجوری میشه
این کد زیر کد همون دکمه باید باشه

private void button1_Click(object sender, EventArgs e)
{
Open(@"C:/myfile.mp3");
}

برای play و Stop هم اینجوری میشه
رو دکمه کلیک میکنی داخلش این کد را میزاری
برای play
Play(true);
برای Stop
Play(false);

برای بستنش هم اینجوریه

Close();

عزیز من کدها رو کپی کردم ولی open رو میخوام فراخونی کنم اصلا نمیشناسه!
کلاس MP3Player میخوام استفاده کنم چیزی نمیاره

mehrdad1991h
چهارشنبه 21 اسفند 1392, 10:31 صبح
عزیز من کدها رو کپی کردم ولی open رو میخوام فراخونی کنم اصلا نمیشناسه!
کلاس MP3Player میخوام استفاده کنم چیزی نمیاره

این الان به صورت کلاس بود
احتمالا استفاده از کلاس را هم بلد نیستید لذا اینجوری کپی کن تو فرم اصلیت

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);
}
}