![]() |
|
الأصوات في VB .net - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : الأصوات في VB .net (/showthread.php?tid=4810) |
الأصوات في VB .net - RaggiTech - 02-10-12 كاتب الموضوع : samerselo
قبل فيجول ستوديو 2005 كانت عملية إضافة أبسط الأصوات إلى برنامجك تعتبر تحديا نوعا ما ولكن تمت إضافة مجموعة هائلة من الفئات ومجالات الأسماء في الفريم وورك 2 وبعضها سياعدك في عمل ذلك وسوف أقوم بنظرة على المجال System.Media في هذا الموضوع لاطلاق صوت الصافرة beep سنحتاج لاستخدام الفئة SystemSounds والتي لها خمس خصائص عامة Asterisk, Beep, Exclamation, Hand, Question كل من هذه الخصائص يقوم بعرض شئ object يعود إلى SystemSounds ويعرض إجرائية Play لجعل الكمبيوتر يصدر ذلك الصوت ولتشغيل صوت beep الخاص بالنظام نستخدم كود : System.Media.SystemSounds.Beep.Playصندوق الرسائل MessageBox يمكنك تشغيل صوت النظام المناسب ليصاحبه وذلك حتى تلفت انتباه مستخدم تطبيقك لمحتويات الرسالة كود : System.Media.SystemSounds.Exclamation.Play()وذلك من أماكن مختلفة كملف على القرص الصلب أو موقع إنترنت أو حتى مصادر مضمنة ضمن exe البرنامج. وأول خطوة تقوم بها هي تحميل الملف فإذا كنت تقوم بتشغيله من ملف أو من موقع انترنت يجب عليك القيام بتحميله أولا أما عندما تريد تشغيله من مصادر مضمنة فإجرائية التشغيل ستقوم بتحميله بالنيابة عنك إن لم تقم بالتحميل أولا وبهذا يكون لديك مجال من المرونة للتشغيل المتزامن أو غير المتزامن. عندما تريد تشغيل ملف wav بوقت قريب لوقت التشغيل ولا تستطيع ضمان اكتمال التحميل بوقت تشغيل الاجراء play عندها يجب عليك اختيار التشغيل المتزامن وسيئته هو أنك سوف تمنع استكمال تنفيذ التطبيق في ذلك المسار thread حتى انتهاء التحميل والتشغيل غير المتزامن فعال خاصة عندما تقوم بالتحميل من مصدر بطئ مثل عنوان انترنت مثلا والملف كبير نوعا ما عندها يجب عليك استخدام التحميل الغير متزامن الذي سيسمح لبرنامجك باستكمال التنفيذ بنفس الوقت الذي يقوم فيه بتحميل الملف وسوف يتم اعلامك بانتهاء التحميل بإطلاق الحدث LoadCompleted وذلك في حالة رغبتك بإجراء معالجة إضافية أو إجراء أي عمل آخر بالإضافة إلى ذلك يمكنك استخدام الخاصية IsLoadCompleted في أي وقت للتحقق من حالة التحميل ويمكن أن يبدو كودك في حالة التحميل الغير متزامن كالكود التالي كود : Dim Player As New SoundPlayerللملف كاملا قبل أن يكمل التطبيق مسار تنفيذه ولن تضطر للقلق عبر أي تدخل لكود أو مستخدم في ذلك الوقت فعندما يكون طول ملفك ثانية أو اثنتين لن يشكل ذلك مشكلة ولكن أي زمن أطول من ذلك سيسبب اختناقا للتطبيق وسوف يشكك المستخدم في جدوى التطبيق وفي الواقع الاجراء SoundPlayer.Play سيقوم بتشغيل الملف بشكل غير متزامن حتى لايعيق تنفيذ برنامجك كود : Dim Player As New SoundPlayerأن يستمر تشغيل الملف حتى يقوم المستخدم بضغط زر ما أو حتى تنتهي من عملية برمجية معينة عندها ستستدعي الاجرائية PlayLooping فستقوم الفريموورك بتشغيل الملف بشكل مستمر بشكل غير متزامن حتى تقوم باستدعاء الاجرائية SoundPlayer.Stop وإذا قمنا بإلقاء نظرة على المجال My في الفريموورك سنجد أن جميع ما تمت مناقشته حتى الآن موجود ضمن My.Computer.Audio فلتشغيل ملف يمكنك استخدام كود : My.Computer.Audio.Play("C:\Program Files\Messenger\newemail.Wav")إذا لماذا قمنا بكتابة كود أكثر بهذا الشكل؟ بالإضافة إلى تعلم كيفية إجراء ذلك ضمن الفريموورك سوف تحتاج للعمل مع الفئة SoundPlayer إذا كنت ستحتاج للتعامل مع أي من الأحداث الثلاثة التي تطلقها تلك الفئة أولا الحدث LoadCompleted الذي ذكرناه سابقا سوف يطلق في نهاية التحميل الغير متزامن للملف فإذا كنت تحمل من عنوان انترنت أو ملف ستجد انه هذا الحدث هام جدا لالتقاطه وسوف تتحقق من بارامترات الحدث للتحقق من اكتمال التحميل بنجاح كود : Private Sub Player_LoadCompleted(ByVal sender As Object, _متزامن أو إيقاف تشغيل الملف الحالي أو القيام بأي عمل آخر يحتاجه تطبيقك والحدث الأخير الهام هو StreamChanged وهو مشابه للحدث السابق ولكنه مفيد بشكل خاص عندما تقوم بتحميل الملف من الذاكرة أو ملف على القرص MemoryStream or FileStream وإذا رغبت في القيام بأكثر من تشغيل ملف wav عندها ستضطر للخروج خارج الفريموورك وأحد الخيارات هو اللجوء إلى Windows Media Player وبتحميل Windows Media Player SDK يمكنك عندها تشغيل تقريبا أي صيغة ملف وببنية بيسطة مشابهة لـلمجال System.Media ستجد أن التعامل مع Windows Media Player سهلا للغاية فمثلا كود : Dim WMP As New WMPLib.WindowsMediaPlayerMY الجديد الخاص بفيجول بايزيك أو استخدام Windows Media Player لدعم جميع أنواع صيغ الملفات |