15-09-12, 02:45 PM
أحب أن أذكر أن هذا الكود يستخدم مكتبات winmm.dll موجودة في جميع إصدارات الويندوز
إبتدائاً من ويندوز 95 حتى فيستا
على حسب ما قرأة من الإنترنت
بعض الملاحظات البسيطة لتتعرف على الكود
سأتكلم عن الكلاس BasicMciPlayer
هذا الكلاس يستخدم مكتبات winmm.dll
وهي بدورها تقوم بتشغيل ملفات MP3 , WAV , MID , WMA , ASF , AVI
بالإضافة إلى إمكانيتها لتشغيل ملفات الفيديو المعروفة
قمت بعمل هذا الكلاس طبعاً بعد البحث في الإنترنت عن كيفية تشغيل ملفات الصوت بدون الحاجة لعمل رفرنس أو إضافة ملفات Dll بشكل مباشر بالمشروع
طريقة التعامل مع هذة المكتبة هي بالمراسلة النصية
يعني لو أردت تشغيل ملف صوتي الرسالة ستكون عبارة عن نص من نوع String
سيتم إرسالة إلى المكتبة winmm.dll وهي بدورها تحلل النص وتتعامل معة بطريقتها الخاصة
وبإمكانها أيضاً الرد عليك برسالة نصية
حيث بإمكانك إرسال متغير من نوع String والرد الذي سيأتي سيتم تعبأته في هذا المتغير
يعني بإمكانك السؤال عن الكائن الصوتي الموجود في الذاكرة طبعاً يتم التعرف علية بالإسم المستعار الذي أخذة الكائن عند إنشائة ,, يمكنك السؤال عن حالتة هل هو يعمل الآن ,, كم طول المدة الصوتية ,, (ما هو الموقع الحالي للقرائة الصوتية - تنفع لعمل شريط يبين التقدم )
كلمة الكائن وهي تعني الكلاس BasicMciPlayer الذي وضعتة في هذا الموضوع
في الشرح إذا قراءة Player فهو يعني الكلاس BasicMciPlayer
بعظ التلميحات على الأكواد
1 - الخاصية FileAlias()
وهي لإعطاء إسم مستعار سيتم تخزينة في الذاكرة للملف الصوتي المراد تشغيلة
بحيث لا يمكنك تغيرة لذلك تم وضعة للقراءة فقط
المكتبة winmm.dll لا يمكنها التعرف على هذا الكائن إلى عن طريقة إسمه المستعار
ويتم إعطاء الإسم المستعار في الحدث New الخاص بالكلاس
إذا أردت إنشاء كائن واحد فقط لتقوم بتشغيل الأصوات عن طريقة
فيجب أن تعلم أن هذا الكائن لا يشغل إلى ملف صوتي واحد فقط في نفس الوقت
**(لتشغيل أكثر من ملف صوتي في نفس الوقت تابع الشرح)**
مثال :
لاحظ هنا عند تعديل إسم الملف MyPlayer.FileName
يتم إستدعاء الأمر Stop() ثم close()
أي فقط بمجرد تغييرك لأسم الملف يتم إيقاف تشغيل الصوت
close لاتعني إغلاق الكائن بل هي فقط لإرسالة رسالة للمكتبة winmm.dll لتقوم بإغلاق أي شيئ يخص الإسم المستعار
لاحظ الخاصية FileName
إذا أردت أت تشغل أكثر من صوت في نفس الوقت فيجب إنشاء كائن جديد لكل صوت تريد تشغيلة لأن كل كائن سيأخذ إسم مستعار يختلف عن أي كائن آخر
مثال :
هنا تم إنشاء كائن جديد لكل ملف صوتي نريد أن نشغلة
هنا ستسمع ثلاث ملفات صوتية في نفس الوقت
الآن ثلاث ملفات صوتية تعمل في نفس الوقت
لإيقاف الصوت يجب إستدعاء أمر التوقف من الكائن نفسه الذي يشغل الصوت
بإمكانك تحديد مستوى الصوت لكل كائن
طبعاً زي ما أنتوا عارفين مستوى الصوت من 0 إلى 100
بإمكانك معرفة حالة التشغيل الخاصة بالملف الصوتي إذا كان قيد التشغيل أم لا
عن طريق الخاصية
MyPlayer.IsPlaying
القية التي سترجع هي True أو False
بإمكانك معرفة طول مدة الصوت من الخاصية Player.Length
وهي ترجع قيمة عددية تعبر عن طول مدة الصوت
وهي تحسب بالــ milli-seconds ملي ثانية
والـثانية الواحدة = 1000 milli-seconds
والحسبة عليك
أيضاً بإمكانك توقيف الملف الموسيقي مؤقتاً ثم المتابعة
عن طريق الأوامر
أترك الباقي لكم ,,
إبتدائاً من ويندوز 95 حتى فيستا
على حسب ما قرأة من الإنترنت
بعض الملاحظات البسيطة لتتعرف على الكود
سأتكلم عن الكلاس BasicMciPlayer
هذا الكلاس يستخدم مكتبات winmm.dll
وهي بدورها تقوم بتشغيل ملفات MP3 , WAV , MID , WMA , ASF , AVI
بالإضافة إلى إمكانيتها لتشغيل ملفات الفيديو المعروفة
قمت بعمل هذا الكلاس طبعاً بعد البحث في الإنترنت عن كيفية تشغيل ملفات الصوت بدون الحاجة لعمل رفرنس أو إضافة ملفات Dll بشكل مباشر بالمشروع
طريقة التعامل مع هذة المكتبة هي بالمراسلة النصية
يعني لو أردت تشغيل ملف صوتي الرسالة ستكون عبارة عن نص من نوع String
سيتم إرسالة إلى المكتبة winmm.dll وهي بدورها تحلل النص وتتعامل معة بطريقتها الخاصة
وبإمكانها أيضاً الرد عليك برسالة نصية
حيث بإمكانك إرسال متغير من نوع String والرد الذي سيأتي سيتم تعبأته في هذا المتغير
يعني بإمكانك السؤال عن الكائن الصوتي الموجود في الذاكرة طبعاً يتم التعرف علية بالإسم المستعار الذي أخذة الكائن عند إنشائة ,, يمكنك السؤال عن حالتة هل هو يعمل الآن ,, كم طول المدة الصوتية ,, (ما هو الموقع الحالي للقرائة الصوتية - تنفع لعمل شريط يبين التقدم )
كلمة الكائن وهي تعني الكلاس BasicMciPlayer الذي وضعتة في هذا الموضوع
في الشرح إذا قراءة Player فهو يعني الكلاس BasicMciPlayer
بعظ التلميحات على الأكواد
1 - الخاصية FileAlias()
وهي لإعطاء إسم مستعار سيتم تخزينة في الذاكرة للملف الصوتي المراد تشغيلة
بحيث لا يمكنك تغيرة لذلك تم وضعة للقراءة فقط
المكتبة winmm.dll لا يمكنها التعرف على هذا الكائن إلى عن طريقة إسمه المستعار
ويتم إعطاء الإسم المستعار في الحدث New الخاص بالكلاس
كود :
ReadOnly Property FileAlias() As String
Get
Return mFileAlias
End Get
End Propertyإذا أردت إنشاء كائن واحد فقط لتقوم بتشغيل الأصوات عن طريقة
فيجب أن تعلم أن هذا الكائن لا يشغل إلى ملف صوتي واحد فقط في نفس الوقت
**(لتشغيل أكثر من ملف صوتي في نفس الوقت تابع الشرح)**
مثال :
كود :
'- إنشاء الكائن لمرة واحدة
Dim MyPlayer As New BasicMciPlayer
'- إستخدام الكائن لتشغيل ملف صوتي
MyPlayer.FileName = "C:\Music.mp3"
MyPlayer.Play()
'- إستخدام نفس الكائن لتشغيل ملف صوتي آخر
MyPlayer.FileName = "C:\Music.mid"
MyPlayer.Play()
'- إستخدام نفس الكائن لتشغيل ملف صوتي آخر
MyPlayer.FileName = "C:\Music.wav"
MyPlayer.Play()يتم إستدعاء الأمر Stop() ثم close()
أي فقط بمجرد تغييرك لأسم الملف يتم إيقاف تشغيل الصوت
close لاتعني إغلاق الكائن بل هي فقط لإرسالة رسالة للمكتبة winmm.dll لتقوم بإغلاق أي شيئ يخص الإسم المستعار
لاحظ الخاصية FileName
كود :
Property FileName() As String
Get
Return mFileName
End Get
Set(ByVal value As String)
Me.Stop()
Me.close()
mFileName = value
End Set
End Propertyإذا أردت أت تشغل أكثر من صوت في نفس الوقت فيجب إنشاء كائن جديد لكل صوت تريد تشغيلة لأن كل كائن سيأخذ إسم مستعار يختلف عن أي كائن آخر
مثال :
هنا تم إنشاء كائن جديد لكل ملف صوتي نريد أن نشغلة
هنا ستسمع ثلاث ملفات صوتية في نفس الوقت
كود :
'- إنشاء كائن لتشغيل ملف صوتي
Dim MyPlayer00 As New BasicMciPlayer
MyPlayer00.FileName = "C:\Music.mp3"
MyPlayer00.Play()
'- إنشاء كائن جديد لتشغيل ملف صوتي آخر في نفس الوقت
Dim MyPlayer11 As New BasicMciPlayer
MyPlayer11.FileName = "C:\Music.mid"
MyPlayer11.Play()
'- إنشاء كائن جديد لتشغيل ملف صوتي آخر في نفس الوقت
Dim MyPlayer22 As New BasicMciPlayer
MyPlayer22.FileName = "C:\Music.wav"
MyPlayer22.Play()لإيقاف الصوت يجب إستدعاء أمر التوقف من الكائن نفسه الذي يشغل الصوت
كود :
MyPlayer00.Stop()
MyPlayer11.Stop()
MyPlayer22.Stop()بإمكانك تحديد مستوى الصوت لكل كائن
طبعاً زي ما أنتوا عارفين مستوى الصوت من 0 إلى 100
كود :
MyPlayer00.volume = 10
MyPlayer11.volume = 50
MyPlayer22.volume = 100بإمكانك معرفة حالة التشغيل الخاصة بالملف الصوتي إذا كان قيد التشغيل أم لا
عن طريق الخاصية
MyPlayer.IsPlaying
القية التي سترجع هي True أو False
كود :
If MyPlayer.IsPlaying Then
إذا تحقق الشرط
افعل أي شيئ هنا
End Ifبإمكانك معرفة طول مدة الصوت من الخاصية Player.Length
وهي ترجع قيمة عددية تعبر عن طول مدة الصوت
وهي تحسب بالــ milli-seconds ملي ثانية
والـثانية الواحدة = 1000 milli-seconds
والحسبة عليك
أيضاً بإمكانك توقيف الملف الموسيقي مؤقتاً ثم المتابعة
عن طريق الأوامر
كود :
للتوقف مؤقتاً
Player.Pause()
للمتابعة
Player.resume()أترك الباقي لكم ,,
