PDA

View Full Version : سوال: علت ارور در استفاده از AxWindowsMediaPlayer براي پخش فايل صوتي



yekta64
پنج شنبه 19 فروردین 1389, 11:55 صبح
سلام
دوستان من براي پخش فايل هاي mp3 يا صوتي از AxWindowsMediaPlayer استفاده كردم منتها ارور زير رو مي ده مشكل چي هستش؟؟
Exception of type 'System.Windows.Forms.AxHost+InvalidActiveXStateEx ception' was thrown.

alireza_s_84
پنج شنبه 19 فروردین 1389, 13:00 عصر
سلام
دوستان من براي پخش فايل هاي mp3 يا صوتي از AxWindowsMediaPlayer استفاده كردم منتها ارور زير رو مي ده مشكل چي هستش؟؟
Exception of type 'System.Windows.Forms.AxHost+InvalidActiveXStateEx ception' was thrown.

سلام دوست عزیز:
شما به احتمال زیاد یا AddRefrence نکردین به پروژه تون و یا اینکه مسیر دهی به فایل زمانی صورت میگیره که هنوز این کنترل Initialize نشده.
شما نحوه قرار دادن این کنترل رو بذارید تا بیشتر راهنمایی کنم.
کلا این خطا برای کنترلهای com صورت میگیره که دو علت بالا دخیل باشن.
1- عدم رفرنس دهی
2- ست کردن خاصیتی از کنترلهای اکتیو ایکس قبل از ارزش دهی کنترل
موفق باشید

yekta64
پنج شنبه 19 فروردین 1389, 13:10 عصر
سلام دوست عزیز:
شما به احتمال زیاد یا AddRefrence نکردین به پروژه تون و یا اینکه مسیر دهی به فایل زمانی صورت میگیره که هنوز این کنترل Initialize نشده.
شما نحوه قرار دادن این کنترل رو بذارید تا بیشتر راهنمایی کنم.
کلا این خطا برای کنترلهای com صورت میگیره که دو علت بالا دخیل باشن.
1- عدم رفرنس دهی
2- ست کردن خاصیتی از کنترلهای اکتیو ایکس قبل از ارزش دهی کنترل
موفق باشید

مرسي دوست عزيز
من براي پخش فايل صوتي از كد زير استفاده مي كنم
البته addrefrence هم كردم باز اين ارور رو مي ده:
AxWMPLib.AxWindowsMediaPlayer ax = new AxWMPLib.AxWindowsMediaPlayer();
ax.URL = Path;
ax.Ctlcontrols.play();

به نظر شما ايراد كد من چي هستش؟؟
اگه براي كاري كه مي خوام انجام بدم راه حل بهتري سراغ داريد ممنون ميشم بگيد؟؟؟
مرسي

alireza_s_84
پنج شنبه 19 فروردین 1389, 13:39 عصر
مرسي دوست عزيز
من براي پخش فايل صوتي از كد زير استفاده مي كنم
البته addrefrence هم كردم باز اين ارور رو مي ده:
AxWMPLib.AxWindowsMediaPlayer ax = new AxWMPLib.AxWindowsMediaPlayer();
ax.URL = Path;
ax.Ctlcontrols.play();

به نظر شما ايراد كد من چي هستش؟؟
اگه براي كاري كه مي خوام انجام بدم راه حل بهتري سراغ داريد ممنون ميشم بگيد؟؟؟
مرسي

خوب شما این کد رو کجا قرار دادین به احتما زیاد یا InitializeComponent و یا FormLoad.
بهترین راه حل شما در حالت طراحی (Design Mode) کنترل رو اضافه کنید ولی حالت اونو Hide کنید (Visible رو نمیگم Enable رو هم نمیگم) یعنی شما زمان لود فرم کنترل رو با متد Hide مخفی کنید.
چون تصور من اینه که شما میخواید از این کنترل استفاده کنید اما نمیخواید روی فرم دیده بشه.
چون کنترل به فرم اضافه نشده (یعنی کاملا ارزش دهی نشده) (به وضعیت کامل نرسیده InvalidActiveXStateEx ception) این پیغام خطا رخ میده.
غیر از این فکر نمیکنم دلیل دیگه ای داشته باشه.
موفق باشید

yekta64
پنج شنبه 19 فروردین 1389, 13:54 عصر
خوب شما این کد رو کجا قرار دادین به احتما زیاد یا InitializeComponent و یا FormLoad.
بهترین راه حل شما در حالت طراحی (Design Mode) کنترل رو اضافه کنید ولی حالت اونو Hide کنید (Visible رو نمیگم Enable رو هم نمیگم) یعنی شما زمان لود فرم کنترل رو با متد Hide مخفی کنید.
چون تصور من اینه که شما میخواید از این کنترل استفاده کنید اما نمیخواید روی فرم دیده بشه.
چون کنترل به فرم اضافه نشده (یعنی کاملا ارزش دهی نشده) (به وضعیت کامل نرسیده InvalidActiveXStateEx ception) این پیغام خطا رخ میده.
غیر از این فکر نمیکنم دلیل دیگه ای داشته باشه.
موفق باشید

مرسي
ببينيد دوست عزيز
من چندين فرم دارم كه نياز دارم اينكاري كه گفتم رو انجام بدم راه حل مناسبي نيست كه توي تمام فرم كنترل رو قرار بدم به همين خاطر مي خوام يه شي از كنترل ايجاد كنم

از طرفي من براي امتحان كنترل رو روي صفحه گذاشتم بعد يك شي ايجاد كردم كه بازهمون ايراد رو مي گيره.
در حالت كلي چطور از كنترل مديا پلير يه شي ايجاد كنم؟؟؟؟
مرسي

alireza_s_84
پنج شنبه 19 فروردین 1389, 14:30 عصر
من چندين فرم دارم كه نياز دارم اينكاري كه گفتم رو انجام بدم راه حل مناسبي نيست كه توي تمام فرم كنترل رو قرار بدم به همين خاطر مي خوام يه شي از كنترل ايجاد كنم

چرا راه حل خوبی نیست؟؟؟
شما توی هر فرم باید از این کنترل نمونه سازی کنید خوب پس از همون اول قرار بدین که بهتره


از طرفي من براي امتحان كنترل رو روي صفحه گذاشتم بعد يك شي ايجاد كردم كه بازهمون ايراد رو مي گيره.
در حالت كلي چطور از كنترل مديا پلير يه شي ايجاد كنم؟؟؟؟
خوب دیگه نیازی به نمونه سازی نیست همونجا خاصیت URL رو مقدار دهی کنید لزومی به نمونه سازی از کنترل نیست.

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

alireza_s_84
پنج شنبه 19 فروردین 1389, 17:27 عصر
در حالت كلي چطور از كنترل مديا پلير يه شي ايجاد كنم؟؟؟؟
براتون یک فایل ضمیمه می کنم که نحوه افزودن این کنترل بصورت RunTime رو نشون میده
موفق باشید

yekta64
پنج شنبه 19 فروردین 1389, 18:07 عصر
چرا راه حل خوبی نیست؟؟؟
شما توی هر فرم باید از این کنترل نمونه سازی کنید خوب پس از همون اول قرار بدین که بهتره

خوب دیگه نیازی به نمونه سازی نیست همونجا خاصیت URL رو مقدار دهی کنید لزومی به نمونه سازی از کنترل نیست.

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

مرسی یه سوا
چرا بهتره که من کنترل رو به برنامه اضافه کنم و از کد نویس اجتناب کنم؟
برتری اضافه کردن کد به ایجاد کد در زمان اجرا چی می تونه باشه؟

alireza_s_84
پنج شنبه 19 فروردین 1389, 18:11 عصر
چرا بهتره که من کنترل رو به برنامه اضافه کنم و از کد نویس اجتناب کنم؟
برتری اضافه کردن کد به ایجاد کد در زمان اجرا چی می تونه باشه؟
اجتناب از کدنوشتن اضافی.
شما چرا باید توی هر صفحه بشینید کد تکراری بنویسید
کلا بهتر کار اینه که یک یوزرکنترل استفاده کنید این کدها رو توش بذارید و یک خاصیت عمومی برای یوزرکنرتلتون تعریف کنید که این خاصیت مسیر فایلی که باید اجرا بشه.

yekta64
شنبه 21 فروردین 1389, 08:23 صبح
براتون یک فایل ضمیمه می کنم که نحوه افزودن این کنترل بصورت RunTime رو نشون میده
موفق باشید

سلام
دوست عزيز امكانش هست يه مقدار در مورد كدي كه نوشتيد توضيح بديد؟؟؟
ممنون

alireza_s_84
شنبه 21 فروردین 1389, 13:20 عصر
سلام
دوست عزيز امكانش هست يه مقدار در مورد كدي كه نوشتيد توضيح بديد؟؟؟
ممنون



this.axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer(); نمونه سازی از کنترل
this.Controls.Add(axWindowsMediaPlayer1); افزودن کنترل به مجموعه کنترلهای فرم
this.axWindowsMediaPlayer1.URL = @"L:\Full Album\Shahyar Ghanbari\ I Love Yous\07 - Ghazal Banoo.mp3"; تعیین مسیر فایلی که باید پخش شود
this.axWindowsMediaPlayer1.Hide(); مخفی کردن کنترل تا نمایش داده نشود