# Native Code > برنامه نویسی در 6 VB > برنامه نویسی مرتبط با بازی و گرافیک در VB6 > سوال: چگونه اجرا فیلم و آهنگ در ویژوال بیسیک

## saeed7474

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

یا اهنگ

چطور این کارو بکنم

ممنون

----------


## saeed7474

و همچنین چطوری اهنگ ها و فیلمارو وارد نرم افزار کنم که بعدا باهاش نصب بشه ؟

پروژه استاندارده

----------


## MohammadGh2011

سلام عليکم

با استفاده از کنترل windows media player ميشه اين کار رو انجام داد.

----------


## saeed7474

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

اهنگ  ها و ویدئو ها هم همراهش باشه ؟
چه ادرس بدم ؟ نرم افزار و اهنگا رو در یک پوشه بسازم ؟

----------


## saeed7474

یا بهتره بگم چطور ادرس موزیک یا ویدئو رو در کنترل بدم که بعدا که فایل ستاپ رو ساختم کاربر هرجا برنامه رو نصب کرد فایل اجرا بشه

مثلا الان من ادرس یه فایل موزیک رو میدم تو سیستم من D:/music/a.mp3 اما خب این تو سیستم بقیه نیست 
میخوام هرجا که نرم افزار رو نصب کرد فایل ها هم همونجا ریخته بشه و ادرس فایل در کنترل مدیا پلیر از اونجا گرفته بشه
*:/*../a.mp3

----------


## saeed7474

فایل ها باید وارد بانک اطلاعاتی بشه ؟
از کنترل OLE هم میشه استفاده کرد؟

----------


## SlowCode

نه در این مورد استفاده از پایگاه داده درست نیست.
برای آهنگ ها هم اگه کنار برنامت باشن از کد زیر استفاده کن:

strPath = App.path & "\a.mp3"

برای پرتابل کردن هم میتونی از  VMWare ThinApp استفاده کنی. البته به صورت دستی هم میتونی ولی به دردسرش نمی ارزه.

----------


## saeed7474

ممنون از کمک دوستان 

مدیا پیلیر همه فرمتا رو اجرا میکنه ؟

----------


## SlowCode

نه فقط فرمت هایی که ویندوز مدیا پلیر پشتیبانی میکنه. متاسفانه مدیاپلیر ویندوز کامل نیست و بعضی از فرمت ها رو باز نمیکنه.

----------


## saeed7474

پس برای بقیه فرمت ها چیکار کنیم مثلا mkv

----------


## amin32

اگه کدکهای مربوط به فرمت روی سیستم نصب باشه , همون کامپوننت windows media player پخش میکنه.
میتونید Setup رو جوری طراحی کنید که نصب کدکها هم در هنگام نصب نرم افزار اجرا بشه.

----------


## saeed7474

> اگه کدکهای مربوط به فرمت روی سیستم نصب باشه , همون کامپوننت windows media player پخش میکنه.
> میتونید Setup رو جوری طراحی کنید که نصب کدکها هم در هنگام نصب نرم افزار اجرا بشه.


 چجور این کار روباید کرد ؟

ویه سوال دیگه

می خوام فرمی که اهنگو پخش میکنه اگر اهنگ در حال پخش باشه و کاربر روی دکمه برگشت کلیک کنه از کاربر سوال کنه ایا پخش بشه اهنگ یا نه . چطور ممکنه ؟ با استفاده از مسیج باکس و if ؟

و اگه ویدئو در حال پخش باشه
if windosmediaplayer 
چه مشخصه ای باید \ false بشه تا ویدئو قطع بشه ؟

----------


## SlowCode

کاری نمیشه کرد، مگر اینکه از کامپوننت برنامه ای که اونو پشتیبانی میکنه استفاده کنی، که من تا حالا ندیدم.

----------


## amin32

> چجور این کار روباید کرد ؟
> 
> ویه سوال دیگه
> 
> می خوام فرمی که اهنگو پخش میکنه اگر اهنگ در حال پخش باشه و کاربر روی دکمه برگشت کلیک کنه از کاربر سوال کنه ایا پخش بشه اهنگ یا نه . چطور ممکنه ؟ با استفاده از مسیج باکس و if ؟
> 
> و اگه ویدئو در حال پخش باشه
> if windosmediaplayer 
> چه مشخصه ای باید \ false بشه تا ویدئو قطع بشه ؟


 فایلهای مربوط به نصب کدک زیاد هستند ولی فکر میکنم استفاده از اونها به این شکل از نظر قانون کپی رایت درست نباشه , و مشکل داشته باشه! 
به هر حال بر فرض اگه شما فایل کدک رو از صفحه زیر دانلود کرده باشید:
http://p30download.com/fa/entry/818/...C%D8%B1%DB%8C/

حالا  به نظرم آسونترین راه اینه اون فایل رو در کنار فایل نصب برنامه قرار بدید و  به کاربرای برنامتون بگید که هر دو فایل رو نصب کنن .

سوال دومتون یکم گنگ بود!

برای توقف پخش باید از کد زیر استفاده کنید:

WindowsMediaPlayer1.Controls.stop

----------


## saeed7474

اها هر دو فایل رو مثلا تو setup factory مشخص میکنیم نصب کنه ؟. 

سوال دومم 

مشخصه play و stop مدیا پلیره

و اینکه چگونه اگه موس مثلا رو یه لیبل به اسم play بره(بدون کلیک)DragOver  یه فایل که ادرسشو مشخص کردیم شروع به پخش کنه

----------


## SlowCode

شما اول امتحان کن ببین با نصب کدک مدیاپلیر اون فرمت ها رو باز میکنه یا نه! شاید اصلا نشه!
کدت رو توی MouseMove لیبل بنویس نه DragOver.

----------


## amin32

> اها هر دو فایل رو مثلا تو setup factory مشخص میکنیم نصب کنه ؟.


نه ! یک فایل که نصب کدک هست و یک فایل هم نصب برنامه شما. این دو فایل رو به کاربرتون تحویل میدید تا *تک تک* نصب کنن. البته فکر میکنم در روشی دیگه بتونید setup ساز رو هم جوری تنظیم کنید که بعد از نصب خود برنامه ( برنامه شما ) فایل نصب کدک رو هم به صورت خودکار اجرا کنه تا توسط کاربر نصب بشه. که این موضوع برمیگرده به نوع Setup ساز .

----------


## saeed7474

> شما اول امتحان کن ببین با نصب کدک مدیاپلیر اون فرمت ها رو باز میکنه یا نه! شاید اصلا نشه!
> کدت رو توی MouseMove لیبل بنویس نه DragOver.


تو MouseMove نوشتم درست شد . خیلی ممنون

فکر کنم بشه کدک برای همه پلیر هاست 

یا فرمت ها رو هم تبدیل کنم فکر کنم بشه خاطر جمع تره

----------


## saeed7474

> نه ! یک فایل که نصب کدک هست و یک فایل هم نصب برنامه شما. این دو فایل رو به کاربرتون تحویل میدید تا *تک تک* نصب کنن. البته فکر میکنم در روشی دیگه بتونید setup ساز رو هم جوری تنظیم کنید که بعد از نصب خود برنامه ( برنامه شما ) فایل نصب کدک رو هم به صورت خودکار اجرا کنه تا توسط کاربر نصب بشه. که این موضوع برمیگرده به نوع Setup ساز .


 بله حرفتون درسته فوقش یه فایل help قرار میدم که بگم هر دو رو نصب کنن اگرم بتونم روش دوم که فکر کنم خاطر جمع تره اگه نرم افزار این قابلیت رو داشته باشه فکر کنم تو اکشن باشه

----------


## saeed7474

یه مشکل دیگه که هست اینه
مثلا من 
3 تا لیبل قرار دادم 

music 1
music 2
music 3

با رفتن مثلا روی

music 2
این موزیک اجرا میشه بعد احتمال داره کاربر سریع موسش بره رو 
music 3
این قطع میشه اون اجرامیشه

میخوام تا یه موزیک به اخر نرسیده اون یکی شروع نشه !
؟

----------


## amin32

فکر میکنم شما میخواید یک چیزی مثل محتوای الکترونیک درست کنید درسته؟!
به هر حال برای این کار باید این خاصیت رو تست کنید:

WindowsMediaPlayer1.playState


اگه ۱ بود یعنی در حالت stop قرار داره اگه ۳ باشه یعنی در حالت پخش قرار داره.

----------


## SlowCode

If WindowsMediaPlayer1.Status <> "Stopped" Then
WindowsMediaPlayer1.Controls.play
End If

----------


## saeed7474

اشتباهه ! 
بازم پخش میکنه

----------


## SlowCode

ببخشید، درست شد:
If WindowsMediaPlayer1.Status = "Stopped" Then
WindowsMediaPlayer1.Controls.play
End If

----------


## amin32

> اشتباهه ! 
> بازم پخش میکنه


فکر کنم کدی که دوستمون گفتن هم درسته. فقط باید کد تغییر url رو هم بعد از شرط و قبل از دستور play قرار بدید و به بزرگی و کوچکی حروف "Stopped" دقت کنید.

----------


## saeed7474

> ببخشید، درست شد:
> If WindowsMediaPlayer1.Status = "Stopped" or "" Then
> WindowsMediaPlayer1.Controls.play
> End If


 error 13 mide

----------


## amin32

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


If WindowsMediaPlayer1.playState = 1 Or WindowsMediaPlayer1.playState = 0 Then
WindowsMediaPlayer1.URL = "c:\music3.mp3"
WindowsMediaPlayer1.Controls.play
End If

----------


## saeed7474

> فکر کنم این کد کارتون رو حل کنه. البته مسیر فایل رو خودتون تغییر بدید :
> 
> 
> If WindowsMediaPlayer1.playState = 1 Or WindowsMediaPlayer1.playState = 0 Then
> WindowsMediaPlayer1.URL = "c:\music3.mp3"
> WindowsMediaPlayer1.Controls.play
> End If


 خیلی ممنون درست شد :قلب:

----------


## saeed7474

> ویه سوال دیگه
> 
> می خوام فرمی که اهنگو پخش میکنه اگر اهنگ در حال پخش باشه و کاربر روی دکمه برگشت کلیک کنه از کاربر سوال کنه ایا پخش بشه اهنگ یا نه . چطور ممکنه ؟ با استفاده از مسیج باکس و if ؟
> 
> و اگه ویدئو در حال پخش باشه
> if windosmediaplayer 
> چه مشخصه ای باید \ false بشه تا ویدئو قطع بشه ؟


If wmp.Controls.play Then
MsgBox "Play Music?", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?"
End If
If vbDefaultButton2 Then
wmp.Controls.stop
Else
wmp.Controls.play
End If

این کدو میزنم ارور میده !؟

----------


## amin32

> If wmp.Controls.play Then
> MsgBox "Play Music?", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?"
> End If
> If vbDefaultButton2 Then
> wmp.Controls.stop
> Else
> wmp.Controls.play
> End If
> 
> این کدو میزنم ارور میده !؟


در شرطی که نوشتید, wmp.Controls.play در واقع دستور پخش هست و هیچ مقدار برگشتی نداره تا در شرط بررسی بشه. همونطور که گفتم برای بررسی در حال پخش بودن باید WindowsMediaPlayer1.playState رو بررسی کنید که در حالت play برابر 3 هست. پس شرط شما میشه:

if wmp.playState=3 then


در مورد مسیج باکس هم اشتباه عمل کردید. فکر میکنم کد درست میشه:

if wmp.playState=3 then
answer= MsgBox("Play music?", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?"")
End If
If answer= vbNo Then
wmp.Controls.stop
Else
wmp.Controls.play
End If

----------


## saeed7474

> در شرطی که نوشتید, wmp.Controls.play در واقع دستور پخش هست و هیچ مقدار برگشتی نداره تا در شرط بررسی بشه. همونطور که گفتم برای بررسی در حال پخش بودن باید WindowsMediaPlayer1.playState رو بررسی کنید که در حالت play برابر 3 هست. پس شرط شما میشه:
> 
> if wmp.playState=3 then
> 
> 
> در مورد مسیج باکس هم اشتباه عمل کردید. فکر میکنم کد درست میشه:
> 
> if wmp.playState=3 then
> answer= MsgBox("Play music?", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?"")
> ...


 مسیج باکس تو متغیر قرار نمیگیره !

----------


## amin32

> مسیج باکس تو متغیر قرار نمیگیره !


چرا دوست عزیز. تابع مسیج باکس دارای یک مقدار برگشتی از نوع integer هست که در واقع نوع پاسخ کاربر رو مشخص میکنه. اگر خطایی رو مشاهده کردید به خاطر اشتباه تایپی بود که در آخر دو تا " قرار گرفت به جای یکی.

----------


## saeed7474

نه درست تایپ کردم 

ارور 
Compile Error
Expected : end of statment

----------


## amin32

دوست عزیز متوجه نشدی چی میگم! منظورم این بود که من بد تایپ کردم و دو تا کاراکتر " پشت سر هم تایپ کردم. یعنی کد درست میشه:


if wmp.playState=3 then
answer= MsgBox("Play music?", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?")
End If
If answer= vbNo Then
wmp.Controls.stop
Else
wmp.Controls.play
End If


انتظار داشتم دیگه اینو خودتون اصلاحش کنید.

----------


## saeed7474

> دوست عزیز متوجه نشدی چی میگم! منظورم این بود که من بد تایپ کردم و دو تا کاراکتر " پشت سر هم تایپ کردم. یعنی کد درست میشه:
> 
> 
> if wmp.playState=3 then
> answer= MsgBox("Play music?", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?")
> End If
> If answer= vbNo Then
> wmp.Controls.stop
> Else
> ...


 چرا متوجه شدم
میگم که ارور میده تا متغیر رو میذارم

این کدمه 

If wmp.playState = 3 Then
answer = MsgBox("پخش شود موزیک ؟", vbYesNo + vbQuestion + vbDefaultButton2, "Play music?"
End If
If answer = vbNo Then
wmp.Controls.stop
Else
wmp.Controls.play
End If


*ممنون،درست شد*

----------


## amin32

صد در صد دارید اشتباه میکنید چون من دوباره همین  کد رو از همین جا کپی کردم و بدون هیچ مشکلی اجرا شد.

----------


## saeed7474

> صد در صد دارید اشتباه میکنید چون من دوباره همین  کد رو از همین جا کپی کردم و بدون هیچ مشکلی اجرا شد.


همین کد من ؟

نمی دونم چه مشکلی داشت ، فکر کنم چون من () ها رو نذاشته بودم 
ولی به هر حال درست شد 

ممنون

----------


## SlowCode

> فکر کنم چون من () ها رو نذاشته بودم


بله اون خطا به خاطر نذاشتن پرانتز بود.

----------


## l4dl4d

برای فرمت های دیگه از ocx های زیر استفاده کنید : (یا خودتون با C++‎ ایجاد کنید  :شیطان: (اگه بلدین؟!!))
mkvview.ocx
aviproc.ocx
vidcollection.ocx
DVDPLAY.OCX

----------


## AliRezaBeytari

محسن 15 آقا ؛ اگر از Visual Studio 2010 استفاده کنیم ، این کد مفهومی ندارد ؛ پس باید چه کار کرد؟

----------


## SlowCode

> محسن 15 آقا ؛ اگر از Visual Studio 2010 استفاده کنیم ، این کد مفهومی ندارد ؛ پس باید چه کار کرد؟


سلام
فکر نکنم مشکلی داشته باشه، چون متدهای کنترل یکی هستن. شاید یه جاییش رو درست ننوشتی.
بهتره این سوال رو تو بخش مربوطه و یا با پیام خصوصی بپرسی. چون به vb6 مربوط نمیشه و حذف میشه.

----------


## hosains.or

دوستان من از mmcontrol استفاده کردم :بامزه: 
بعد از اینکه فایل های MP3 اجرا میشن نتونستم اونها رو قطع کنم یعنی با پخش فایل بعدی فایل های قبلی هنوز در حال پخش هستنکسی اگر کده متوقف کردن اونهارو بلده بگه! :افسرده: 

Private Sub Form_Load()

MMControl1.Notify =False

MMControl1.Wait =True

MMControl1.Shareable =False

end sub

Private Sub CMD_Click()

MMControl1.FileName ="c:\test.mp3' or any type like wav or MP4

MMControl1.Command ="Open"

end sub

----------

