Cesar Aracena
asked on
Do my app need to have windows media player to use axwindowsmediaplayer in Visual Basic?
Hello,
I've made an app to listen to some radio streams using AxWindowsMediaPlayer. I'm using Visual Basic in Visual Studio 2015. So far, it works in a couple testing computers running Windows 10 but not in a computer running a fresh Windows 7.
That Win7 computer is not in my reach so I can't fully test everything but my guess is that Windows Media Player is not installed or initialized? Could that be it?
What I wonder is if WMP needs to be installed in the target computers (which is kinda obvious) but also initialized? I remember in Windows 7 WMP asked a bunch of questions the first time you opened it.
If that's so, is there some way to include some prerequisites with my app so that wouldn't matter?
Thanks in advance!
I've made an app to listen to some radio streams using AxWindowsMediaPlayer. I'm using Visual Basic in Visual Studio 2015. So far, it works in a couple testing computers running Windows 10 but not in a computer running a fresh Windows 7.
That Win7 computer is not in my reach so I can't fully test everything but my guess is that Windows Media Player is not installed or initialized? Could that be it?
What I wonder is if WMP needs to be installed in the target computers (which is kinda obvious) but also initialized? I remember in Windows 7 WMP asked a bunch of questions the first time you opened it.
If that's so, is there some way to include some prerequisites with my app so that wouldn't matter?
Thanks in advance!
use the direct-x direct sound or .net framework instead
Create custom control (Name = "MediaPlayer") and put WebBrowser (Dock=Fill, Name= "wbMedia") on it.
https://msdn.microsoft.com/en-us/library/windows/desktop/dd562656(v=vs.85).aspx
Imports System.Text
Imports System.ComponentModel
Public Class MediaPlayer
Private _url As String, _autoPlay, _loop As Boolean
Private Sub MediaPlayer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim sbMedia As New StringBuilder
sbMedia.AppendLine("<OBJECT ID='MediaPlayer' width=100% height=100% ")
sbMedia.AppendLine("CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'>")
sbMedia.AppendLine("</OBJECT>")
wbMedia.DocumentText = sbMedia.ToString
End Sub
<Editor(GetType(System.Windows.Forms.Design.FileNameEditor), GetType(System.Drawing.Design.UITypeEditor))> _
Public Property MediaPath() As String
Get
Return _url
End Get
Set(ByVal value As String)
_url = value
If wbMedia.Document Is Nothing Then Return
Dim player As Windows.Forms.HtmlElement = wbMedia.Document.GetElementById("MediaPlayer")
If player Is Nothing Then Return
player.SetAttribute("URL", _url)
End Set
End Property
Public Property AutoStart() As Boolean
Get
Return _autoPlay
End Get
Set(ByVal value As Boolean)
_autoPlay = value
If wbMedia.Document Is Nothing Then Return
Dim player As Windows.Forms.HtmlElement = wbMedia.Document.GetElementById("MediaPlayer")
If player Is Nothing Then Return
player.DomElement.settings.autostart = _autoPlay
End Set
End Property
Public Property AutoRepeat() As Boolean
Get
Return _loop
End Get
Set(ByVal value As Boolean)
_loop = value
If wbMedia.Document Is Nothing Then Return
Dim player As Windows.Forms.HtmlElement = wbMedia.Document.GetElementById("MediaPlayer")
If player Is Nothing Then Return
player.DomElement.settings.setMode("loop", _loop)
End Set
End Property
Public Sub StopPlaying()
If wbMedia.Document Is Nothing Then Return
Dim player As Windows.Forms.HtmlElement = wbMedia.Document.GetElementById("MediaPlayer")
If player Is Nothing Then Return
player.DomElement.controls.stop()
End Sub
Private Sub wbMedia_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wbMedia.DocumentCompleted
If wbMedia.Document Is Nothing Then Return
Dim player As Windows.Forms.HtmlElement = wbMedia.Document.GetElementById("MediaPlayer")
If player Is Nothing Then Return
wbMedia.Document.Body.Style = "margin:0px;padding:0px"
If Not player.GetAttribute("URL").Equals(_url, StringComparison.OrdinalIgnoreCase) Then
player.SetAttribute("URL", _url)
End If
If Not player.DomElement.settings.autostart.Equals(_autoPlay) Then
player.DomElement.settings.autostart = _autoPlay
End If
If Not player.DomElement.settings.getMode("loop").Equals(_loop) Then
player.DomElement.settings.setMode("loop", _loop)
End If
End Sub
End Class
You can add some properties/methods as well. See: https://msdn.microsoft.com/en-us/library/windows/desktop/dd564034(v=vs.85).aspx and/orhttps://msdn.microsoft.com/en-us/library/windows/desktop/dd562656(v=vs.85).aspx
@ARK your solution requires the windows media player to be on the client machine better to just use .net classes
If it's not on client machine webbrowser prompt user to download it
ASKER
@Ark: I really would prefer the embedded Windows Media Player instead of a web browser.
@David: I can't find anything about .net supporting AAC codec. Just WAV and MP3. Can you point me please to any info on this? Thanks ;)
@David: I can't find anything about .net supporting AAC codec. Just WAV and MP3. Can you point me please to any info on this? Thanks ;)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.