تشغيل الصوت بعيدا عن ميديا بلاير - ابو روضة - 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 مباشرة عند الضغط على الزر
|