الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يتم عمل حلقة تكرارية لملف صوت

مغلق
بدأه NASSER ALSAIDI في 17 نوفمبر 2001 · 12 رد · 1,477 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اود ان أعرف كيف يتم عمل حلقة تكرارية لملف صوت

ليتم تحديد كم مرة سيشتغل ذلك الملف الصوت بواسطة المستخدم.

مع الجزيل الشكر والتقدير

اللهم اهدنا فيمن هديت ، وعافنا فيمن عافيت ، وتولنا فيمن توليت ، وبارك لنا فيما أعطيت ، واصرف عنا شر ما قضيت ، إنك تقضي ولا يقضى عليك ، إنه لا يذل من واليت ، ولا يعز من عاديت ، تباركت ربنا وتعاليت ، فلك الحمد على ما قضيت ، اللهم اقسم لنا من خشيتك ما تحول به بيننا وبين معصيتك ، ومن طاعتك ما تبلغنا بها رحمتك ، ومن اليقين ما يهون علينا مصائب الدنيا ، ومتعنا اللهم بأبصارنا وأسماعنا وعقولنا وقوانا أبدا ما أحييتنا ، واجعل ذلك الوارث منا ، وانصرنا على من ظلمنا وعادانا ، ولا تجعل مصيبتنا في ديننا ، ولا تسلط علينا بذنوبنا من لا يخافك ولا يرحمنا .

#2

لا أعتقد أن هناك داعي لاستخدام حلقة تكرارية لأن استخدام متغير استاتيكي سيفي بالغرض.

'sndPlaySound تصريح الدالة
Private Declare Function sndPlaySound Lib "winmm.dll" Alias _
"sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long

Private Sub Command1_Click()
 Static Counter As Integer
 Counter = Counter + 1
 sndPlaySound "C:FileName.wav", 1
'Label عرض عدد المرات في أداة
Label1 = "عدد مرات تشغيل الملف = " & Counter
End Sub
#3

السلام عليكم

أستاذي العزيزRead Only

اولاُ:لم أتمكن من أستخدام هذا الكود فهل تتكرم بشرح كيف يتم إستخدامه.

ثانياُ: لقد عملت مثال كيف يتم تحديد كم مرة سيشتغل ملف الصوت

ولكن تنقصنى كيف يتم ربط برمجياُ فهل من الممكن تطبيق الكود على هذا المثال.

هذا هو الملف

LOOP.jpg

فارجوا منكم التكرم بالإفادة.

ولكم جزيل الشكر وبارك الله فيكم

اللهم إنك عفو كريم طيب تحب العفو فاعف عنا ، اللهم إنك عفو كريم طيب تحب العفو فاعف عنا ، اللهم إنك عفو كريم طيب تحب العفو فاعف عنا ، يا الله ياذا الجلال والإكرام ، يا الله يا ذا الجلال والإكرام ، يا الله ياذا الجلال والإكرام ، اللهم أعنا على ذكرك وشكرك وحسن عبادتك ، اللهم أعنا على ذكرك وشكرك وحسن عبادتك ، اللهم أعنا على ذكرك وشكرك وحسن عبادتك

#4

في المثال السابق افترضت أنك تريد تشغيل ملف Wav ولذلك استخدمت الدالة sndPlaySound أيضا توقعت أنك تريد حساب كم مرة سيقوم المستخدم بتشغيل الملف الصوتي.

ولكن من خلال الملف لاحظت أنك تريد تحديد عدد معين من المرات لتشغيل الملف الصوتي. وبما أنك تستخدم الاداة WMP فهذا يسهل الامور كثيرا فيمكنك ضبط القيمة من خلال الخاصية PlayCount

Private Sub Command1_Click()
 MediaPlayer1.PlayCount = Val(Text1)
 MediaPlayer1.FileName = App.Path & "" & "bark.aiff"
End Sub
#5

بارك الله فيك

أشتاذي العزيز

هل لو تتكرم تخبرني كيف يتم :

1- معرفة طول الملف عن طريف الكود

2- وكم متبقي من زمن الملف

3- وعند الأنتهاء يتم عمل حدث معين مثل إشتغال صوت آخر

مشكور أخوي على هذا الجهد

اللهم ربنا انصرنا وانصر جميع المسلمين على أعداء الدين ، اللهم مزقهم شر ممزق وشتتهم كل مشتت واجعل الدائرة عليهم وانصرنا عليهم وامح آثارهم وآو منا أرضهم وديارهم واردد كيدهم في نحورهم وأعذنا من شرورهم وافعل بهم كما فعلت بثمود وعاد وفرعون ذي الأوتاد الذي طغوا في البلاد فأكثروا فيها الفساد ، اللهم صب عليهم صوت عذاب ، وحل بينهم وبين ما يشتهون وافعل بهم كما فعلت بأشياعهم من قبل .

#6

اذا كان المقصود استخدام الاداة WMP فهذا تعديل لمثالك السابق مع ملاحظة أنني لم أعتمد كثيرا على احداث الاداة ... اما اذا كان بخلاف هذه الاداة أرجو التوضيح بأي تقنية تريد فهناك طرق متعددة.

Private Sub Command1_Click()
 MediaPlayer1.PlayCount = Val(Text1)
 MediaPlayer1.FileName = App.Path & "" & "bark.aiff"
End Sub

Private Sub Command2_Click()
 'الزمن الكلي
 MsgBox MediaPlayer1.Duration
End Sub

Private Sub Timer1_Timer()
 'الزمن المنقضي
  Label2 = MediaPlayer1.CurrentPosition
 'الزمن المتبقي
  Label3 = MediaPlayer1.Duration - MediaPlayer1.CurrentPosition
End Sub

Private Sub MediaPlayer1_EndOfStream(ByVal Result As Long)
 MsgBox "انتهى عرض الملف"
 'حمل أي ملف تريده
End Sub
#7

الأ ستاذ / Read Only

بعد التحية والأحترام والتقدير

هل من الممكن تغير هذا الكود الذي نستخدمه لمعرفة الزمن في WMP

لتحويلة الى على هذه الصيغة لأن الكود يظهر بالدقائق والثواني فقط

واريده ان يكون بالساعة والدقائق فقط

'الزمن المنقضي

Label3 = VBA.Format$(M1.Duration / 60 - M1.CurrentPosition / 60, "##.##")

اللهم اغفر لنا سيئاتنا كلها وتقبل منا حسناتنا ، وارفع درجاتنا ، واجعلنا مع الذين أنعمت عليهم من النبيين والصديقين والصالحين وحسن أولئك رفيقا يا الله ياذا الجلال والإكرام .

اللهم إنا نسألك أن تهدينا للهدى ، وأن توفقنا للتقوى ، وأن تأخذ بأيدينا إلى ما تحبه وترضاه ، ياذا الجلال والإكرام .

#8

-

#9

السلام عليكم

ماذا تعني يا أستاذي / Read Only

اللهم آهدنا فيمن هديت وعافنا فمن عافيت وتولنا فيمن توليت

وبارك لنا فيما أعطيت

#10

عفوا على التأخير..

الطريقة التي ذكرتها تنسق الدقائق فقط ولاتظهر الدقائق والثواني حيث تأخذ 99.99 كمعدل أعظمي وليس 59.59 ويمكن استعمال دوال تعامل مع التاريخ لتنفيذ المهمة .. وهذا مثال فقط للتوضيح

 Dim Time1 As Date, Time2 As Date
 Time2 = DateAdd("s", (M1.Duration - M1.CurrentPosition), Time1)
 Label1 = Hour(Time2) & " : " & Minute(Time2) '& " : " & Second(Time2)
#11

السلام عليكم

أستاذي العزيز /Read Only

إسمح لي أن أستوضح لانى لم أتمكن من فهم هذا الكود

وحاولت أن أطبقه ولكن لا يعمل بالطريقة المطلوبه فهل من يوجد توضيح

على الحسب الكود

وبارك الله فيك

#12

لا ادري مالمشكلة التي واجهتك .. لكن على العموم ضع بريدك وسارسل لك مثالا مشروحا..

هذا الموضوع مغلق.

مواضيع مشابهة