منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
تشغيل الصوت بعيدا عن ميديا بلاير - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : تشغيل الصوت بعيدا عن ميديا بلاير (/showthread.php?tid=31792)

الصفحات: 1 2


تشغيل الصوت بعيدا عن ميديا بلاير - ابو روضة - 19-10-19

السلام عليكم ورحمة الله وبركاته.
إخوتى هل هناك طريقة لتشغيل ملف صوتى mp3 بدون ميديا بلاير ؟
بحثت ولم أجد وأكيد لم أبحث بطريقة جيدة



RE: تشغيل الصوت بعيدا عن ميديا بلاير - معتز حسن - 19-10-19

أتمني أن يكون هذا ما تطلبه
Imports System.Media
Public Class Form1
Dim wmp As New WMPLib.WindowsMediaPlayer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


wmp.URL = "mp3file\myfile.mp3"
wmp.controls.play()
End Sub


End Class


RE: تشغيل الصوت بعيدا عن ميديا بلاير - 3booody - 19-10-19

عليكم السلام ورحمة الله وبركاته

للأمانة العلمية هذا الكود منذ زمن بعيد كان لشخص بالمنتدى ولا اتذكر اسم الاخ وانا قمت بالتعديل عليه بحيث اضفت احداث للفئة

كود :
Public Class MediaPlayer
   Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
   Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal dwError As Integer, ByVal lpstrBuffer As String, ByVal uLength As Integer) As Integer

   Public Event MediaOpened(ByVal sender As System.Object, ByVal e As System.EventArgs)
   Public Event MediaClosed(ByVal sender As System.Object, ByVal e As System.EventArgs)
   Public Event MediaPosition(ByVal sender As Object, ByVal e As Long)

   Dim WithEvents tim As New Timer With {.Interval = 1}

   Private Shared ObjectCount As Integer = 0
   Private retVal As Integer = 0
   Private returnData As String = Space(128)
   Private errorString As String = Space(128)
   Private errorSuccess As Boolean

   '
   Sub New()
       ObjectCount = ObjectCount + 1
       mFileAlias = "SND" & Hex(Now.Ticks) & Hex(ObjectCount)
   End Sub

   Sub New(ByVal pFileName As String)
       Me.New()
       Me.FileName = pFileName
   End Sub


   Private mFileAlias As String
   ReadOnly Property FileAlias() As String
       Get
           Return mFileAlias
       End Get
   End Property

   Private mFileName As String
   Property FileName() As String
       Get
           Return mFileName
       End Get
       Set(ByVal value As String)
           Me.Stop()
           Me.close()
           mFileName = value
       End Set
   End Property

   Private mLength As Long = 0
   Public ReadOnly Property Length() As Long
       Get
           Return mLength
       End Get
   End Property

   Public Property Position() As Long
       Get
           retVal = mciSendString("status " & Me.FileAlias & " position", returnData, 128, 0)
           Return Val(returnData)
       End Get
       Set(ByVal value As Long)
           If Me.IsPlaying() Then
               retVal = mciSendString("play " & Me.FileAlias & " from " & value.ToString, 0, 0, 0)
           Else
               retVal = mciSendString("seek " & Me.FileAlias & " to " & value.ToString, 0, 0, 0)
           End If
       End Set
   End Property


   Public ReadOnly Property IsPlaying() As Boolean
       Get
           retVal = mciSendString("status " & Me.FileAlias & " mode", returnData, 128, 0)
           Return returnData.StartsWith("playing")
       End Get
   End Property


   Private mVolume As Byte = 100
   Public Property volume() As Byte
       Get
           Return mVolume
       End Get
       Set(ByVal value As Byte)
           If value > 100 Then
               value = 100
           End If
           mVolume = value

           Dim vol As Integer = (Me.volume * 10)
           retVal = mciSendString("setaudio " & Me.FileAlias & " volume to " & vol.ToString, 0, 0, 0)

       End Set
   End Property

   Private mIsOpen As Boolean = False
   Sub open(ByVal sFileName As String)
       Me.FileName = sFileName
       Me.open()
   End Sub

   Public ScreenHandel As Int32 = 0

   Sub open()
       Me.close()
       If ScreenHandel <= 0 Then
           retVal = mciSendString("open """ & Me.FileName & """ type mpegvideo alias " & Me.FileAlias, 0, 0, 0)
       Else
           retVal = mciSendString("open """ & Me.FileName & """ type mpegvideo alias " & Me.FileAlias & " parent " & ScreenHandel.ToString & " style " & "child" & " ", 0, 0, 0)
       End If

       retVal = mciSendString("set " & Me.FileAlias & " time format ms", 0, 0, 0)

       retVal = mciSendString("status " & Me.FileAlias & " length", returnData, 128, 0)
       mLength = Val(returnData)
       mIsOpen = True
       Me.volume = Me.volume
       RaiseEvent MediaOpened(Me, New System.EventArgs)
       tim.Start()
   End Sub

   Sub Play(Optional ByVal repate As Boolean = False)
       If repate = True Then
           Me.Play("repeat")
       Else
           Play("")
       End If
   End Sub


   Sub Play(ByVal pFileName As String, ByVal pRepate As Boolean)
       Me.FileName = pFileName
       Me.Play(pRepate)
   End Sub

   Sub Play(ByVal pCommand As String)
       Dim Cmd As String = "play " & Me.FileAlias & " " & pCommand
       If mIsOpen = False Then
           Me.close()
           Me.open()
       End If
       retVal = mciSendString(Cmd, 0, 0, 0)
   End Sub


   Sub Pause()
       retVal = mciSendString("pause " & Me.FileAlias, 0, 0, 0)
   End Sub


   Sub [resume]()
       retVal = mciSendString("resume " & Me.FileAlias, 0, 0, 0)
   End Sub

   Sub [Stop]()
       retVal = mciSendString("stop " & Me.FileAlias, 0, 0, 0)
   End Sub


   Sub close()
       Me.Stop()
       retVal = mciSendString("close " & Me.FileAlias, 0, 0, 0)
       '----------------------------------
       If mIsOpen = True Then
           RaiseEvent MediaClosed(Me, New System.EventArgs)
           tim.Stop()
       End If
       '----------------------------------
       mIsOpen = False
       mLength = 0
       '--------------------------------------
   End Sub

   Private Sub tim_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tim.Tick
       RaiseEvent MediaPosition(Me, Me.Position)
   End Sub
End Class

واذا واجهت مشكلة فيه عندي مشروع متكامل عملته عليه
بالتوفيق الك اخي


RE: تشغيل الصوت بعيدا عن ميديا بلاير - معتز حسن - 19-10-19

ملحوظة: لتطبيق هذا الكود ضع مجلد باسم mp3file داخل مجلد البرنامجDebug وضع داخله أي ملف أم بي 3 وعدل myfile.mp3 إلى اسم الملف الذي تريد تشغيله


RE: تشغيل الصوت بعيدا عن ميديا بلاير - ابو روضة - 19-10-19

(19-10-19, 01:11 AM)معتز حسن كتب : أتمني أن يكون هذا ما تطلبه
Imports System.Media
Public Class Form1
   Dim wmp As New WMPLib.WindowsMediaPlayer
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


       wmp.URL = "mp3file\myfile.mp3"
       wmp.controls.play()
   End Sub


End Class


انا أتكلم لو الجهاز اصلا لا يوجد به ميديا بلاير لآن جهازى لا يوجد به هذا المشغل
وبالتالى ظهر هذا الخطأ الذى من أجله طلبت طلبى هذا



(19-10-19, 01:14 AM)3booody كتب : عليكم السلام ورحمة الله وبركاته

للأمانة العلمية هذا الكود منذ زمن بعيد كان لشخص بالمنتدى ولا اتذكر اسم الاخ وانا قمت بالتعديل عليه بحيث اضفت احداث للفئة

كود :
Public Class MediaPlayer
   Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
   Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal dwError As Integer, ByVal lpstrBuffer As String, ByVal uLength As Integer) As Integer

   Public Event MediaOpened(ByVal sender As System.Object, ByVal e As System.EventArgs)
   Public Event MediaClosed(ByVal sender As System.Object, ByVal e As System.EventArgs)
   Public Event MediaPosition(ByVal sender As Object, ByVal e As Long)

   Dim WithEvents tim As New Timer With {.Interval = 1}

   Private Shared ObjectCount As Integer = 0
   Private retVal As Integer = 0
   Private returnData As String = Space(128)
   Private errorString As String = Space(128)
   Private errorSuccess As Boolean

   '
   Sub New()
       ObjectCount = ObjectCount + 1
       mFileAlias = "SND" & Hex(Now.Ticks) & Hex(ObjectCount)
   End Sub

   Sub New(ByVal pFileName As String)
       Me.New()
       Me.FileName = pFileName
   End Sub


   Private mFileAlias As String
   ReadOnly Property FileAlias() As String
       Get
           Return mFileAlias
       End Get
   End Property

   Private mFileName As String
   Property FileName() As String
       Get
           Return mFileName
       End Get
       Set(ByVal value As String)
           Me.Stop()
           Me.close()
           mFileName = value
       End Set
   End Property

   Private mLength As Long = 0
   Public ReadOnly Property Length() As Long
       Get
           Return mLength
       End Get
   End Property

   Public Property Position() As Long
       Get
           retVal = mciSendString("status " & Me.FileAlias & " position", returnData, 128, 0)
           Return Val(returnData)
       End Get
       Set(ByVal value As Long)
           If Me.IsPlaying() Then
               retVal = mciSendString("play " & Me.FileAlias & " from " & value.ToString, 0, 0, 0)
           Else
               retVal = mciSendString("seek " & Me.FileAlias & " to " & value.ToString, 0, 0, 0)
           End If
       End Set
   End Property


   Public ReadOnly Property IsPlaying() As Boolean
       Get
           retVal = mciSendString("status " & Me.FileAlias & " mode", returnData, 128, 0)
           Return returnData.StartsWith("playing")
       End Get
   End Property


   Private mVolume As Byte = 100
   Public Property volume() As Byte
       Get
           Return mVolume
       End Get
       Set(ByVal value As Byte)
           If value > 100 Then
               value = 100
           End If
           mVolume = value

           Dim vol As Integer = (Me.volume * 10)
           retVal = mciSendString("setaudio " & Me.FileAlias & " volume to " & vol.ToString, 0, 0, 0)

       End Set
   End Property

   Private mIsOpen As Boolean = False
   Sub open(ByVal sFileName As String)
       Me.FileName = sFileName
       Me.open()
   End Sub

   Public ScreenHandel As Int32 = 0

   Sub open()
       Me.close()
       If ScreenHandel <= 0 Then
           retVal = mciSendString("open """ & Me.FileName & """ type mpegvideo alias " & Me.FileAlias, 0, 0, 0)
       Else
           retVal = mciSendString("open """ & Me.FileName & """ type mpegvideo alias " & Me.FileAlias & " parent " & ScreenHandel.ToString & " style " & "child" & " ", 0, 0, 0)
       End If

       retVal = mciSendString("set " & Me.FileAlias & " time format ms", 0, 0, 0)

       retVal = mciSendString("status " & Me.FileAlias & " length", returnData, 128, 0)
       mLength = Val(returnData)
       mIsOpen = True
       Me.volume = Me.volume
       RaiseEvent MediaOpened(Me, New System.EventArgs)
       tim.Start()
   End Sub

   Sub Play(Optional ByVal repate As Boolean = False)
       If repate = True Then
           Me.Play("repeat")
       Else
           Play("")
       End If
   End Sub


   Sub Play(ByVal pFileName As String, ByVal pRepate As Boolean)
       Me.FileName = pFileName
       Me.Play(pRepate)
   End Sub

   Sub Play(ByVal pCommand As String)
       Dim Cmd As String = "play " & Me.FileAlias & " " & pCommand
       If mIsOpen = False Then
           Me.close()
           Me.open()
       End If
       retVal = mciSendString(Cmd, 0, 0, 0)
   End Sub


   Sub Pause()
       retVal = mciSendString("pause " & Me.FileAlias, 0, 0, 0)
   End Sub


   Sub [resume]()
       retVal = mciSendString("resume " & Me.FileAlias, 0, 0, 0)
   End Sub

   Sub [Stop]()
       retVal = mciSendString("stop " & Me.FileAlias, 0, 0, 0)
   End Sub


   Sub close()
       Me.Stop()
       retVal = mciSendString("close " & Me.FileAlias, 0, 0, 0)
       '----------------------------------
       If mIsOpen = True Then
           RaiseEvent MediaClosed(Me, New System.EventArgs)
           tim.Stop()
       End If
       '----------------------------------
       mIsOpen = False
       mLength = 0
       '--------------------------------------
   End Sub

   Private Sub tim_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tim.Tick
       RaiseEvent MediaPosition(Me, Me.Position)
   End Sub
End Class

واذا واجهت مشكلة فيه عندي مشروع متكامل عملته عليه
بالتوفيق الك اخي

جزاك الله كل خير أخى لكن الكود كبير وغير مفهوم حقيقة فلو تكرمت ممكن التكرم
بماذا أفعل به أو لو لديك مشروع ارسله لى



RE: تشغيل الصوت بعيدا عن ميديا بلاير - 3booody - 19-10-19

أعذرني اخي لاني لم ارفق لك المشروع مباشرة والسبب لان الاكواد كثيرة به جدآ وغير مفهومه كنت احاول اطوره في السابق لكن تركته على حاله
المهم المشروع راح ارفعه الك حاول تفهمه وتصمم مشروعك الخاص من خلاله افضل لك
به خصائص مثلآ:
ProgressBar من تطويري
تشغيل عن طريق السحب والافلات للملف
حفظ اعدادات البرنامج
تقريبا جمعت امور راح اسميها خرابيط ههههه لان كنت اطمح اعمله مشغل كامل
بالتوفيق الك اخي

قد نسيت شيء وهو ان الكود السابق في المشاركة راح تلاحظه غير موجود بالمشروع لان عملته مكتبه dll مع المشروع


RE: تشغيل الصوت بعيدا عن ميديا بلاير - ابو روضة - 19-10-19

(19-10-19, 01:48 AM)3booody كتب : أعذرني اخي لاني لم ارفق لك المشروع مباشرة والسبب لان الاكواد كثيرة به جدآ وغير مفهومه كنت احاول اطوره في السابق لكن تركته على حاله
المهم المشروع راح ارفعه الك حاول تفهمه وتصمم مشروعك الخاص من خلاله افضل لك
به خصائص مثلآ:
ProgressBar من تطويري
تشغيل عن طريق السحب والافلات للملف
حفظ اعدادات البرنامج
تقريبا جمعت امور راح اسميها خرابيط ههههه لان كنت اطمح اعمله مشغل كامل
بالتوفيق الك اخي

قد نسيت شيء وهو ان الكود السابق في المشاركة راح تلاحظه غير موجود بالمشروع لان عملته مكتبه dll مع المشروع

بارك الله فيك أخى فعلا هذا يعمل جيدا...
سؤال لو سمحت:
ينفع اشغل ملف الصوت من رابط ملف مرفوع على االنترنت بدلا من الجهاز ؟


RE: تشغيل الصوت بعيدا عن ميديا بلاير - 3booody - 19-10-19

هل لديك رابط لملف صوت لكي اجرب الكود عليه؟لان ليس لدي


RE: تشغيل الصوت بعيدا عن ميديا بلاير - ابو روضة - 19-10-19

(19-10-19, 02:16 AM)3booody كتب : هل لديك رابط لملف صوت  لكي اجرب الكود عليه؟لان ليس لدي

اتفضل اخى
http://www.asmreekasounds.com/upfiles/up_down/6a50955a4624c5ccedd3d6d97816aaca.mp3


RE: تشغيل الصوت بعيدا عن ميديا بلاير - معتز حسن - 19-10-19

(19-10-19, 01:20 AM)ابو روضة كتب :
(19-10-19, 01:11 AM)معتز حسن كتب : أتمني أن يكون هذا ما تطلبه
Imports System.Media
Public Class Form1
   Dim wmp As New WMPLib.WindowsMediaPlayer
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


       wmp.URL = "mp3file\myfile.mp3"
       wmp.controls.play()
   End Sub


End Class

أخي أبوروضة الكود أعلاه يعمل بصورة جيدة بدون الميديا بلير.... ولكن لتفادي هذا الخطأ قم بإضافة أداة windows media player  ثم قم بحذفها مرة أخرى وسيعمل ملف الام بي 3 مباشرة عند الضغط على الزر