probleem met windows media player component in visual basic

Status
Niet open voor verdere reacties.

henkjan111

Gebruiker
Lid geworden
9 jan 2011
Berichten
221
Hallo,,

Ik ben een jingleplayer aan het maken (in visual basic). Het is onder andere de bedoeling dat er meerdere jingle's tegelijk afgespeeld kunnen worden. Het probleem is nu:
dat ik maar maximaal 2 liedjes tegelijk af kan spelen (in meerdere mediaplayers).
Heeft iemand hiervoor een oplossing?

Alvast bedankt
Groeten mij :)

(als het niet duidelijk is plaats gerust een reactie)
Dit is wat ik nu heb:
Code:
Public Class Jingle
    Private Sub Jingle_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer2.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer3.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer4.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer5.settings.volume = TrackBar1.Value
    End Sub

    Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
        TrackBar1.Value = 80
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer2.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer3.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer4.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer5.settings.volume = TrackBar1.Value
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        AxWindowsMediaPlayer2.Ctlcontrols.stop()
        AxWindowsMediaPlayer3.Ctlcontrols.stop()
        AxWindowsMediaPlayer4.Ctlcontrols.stop()
        AxWindowsMediaPlayer5.Ctlcontrols.stop()
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
        AxWindowsMediaPlayer2.Ctlcontrols.stop()
        AxWindowsMediaPlayer3.Ctlcontrols.stop()
        AxWindowsMediaPlayer4.Ctlcontrols.stop()
        AxWindowsMediaPlayer5.Ctlcontrols.stop()
        ListBox1.Items.Clear()
        Button2.Text = "Leeg"
        ListBox2.Items.Clear()
        Button4.Text = "Leeg"
        ListBox3.Items.Clear()
        Button3.Text = "Leeg"
        ListBox4.Items.Clear()
        Button7.Text = "Leeg"
        ListBox5.Items.Clear()
        Button8.Text = "Leeg"
    End Sub

    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer2.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer3.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer4.settings.volume = TrackBar1.Value
        AxWindowsMediaPlayer5.settings.volume = TrackBar1.Value
    End Sub

    Private Sub Jingle_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.A Then
            Button2.PerformClick()
        End If
        If e.KeyCode = Keys.B Then
            Button4.PerformClick()
        End If
        If e.KeyCode = Keys.C Then
            Button3.PerformClick()
        End If
        If e.KeyCode = Keys.D Then
            Button7.PerformClick()
        End If
        If e.KeyCode = Keys.E Then
            Button8.PerformClick()
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        OpenFileDialog1.ShowDialog()
    End Sub

    Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        If Button2.Text = "Leeg" Then
            For Each track In OpenFileDialog1.FileNames
                ListBox1.Items.Add(System.IO.Path.GetFileName(track))
            Next
            For Each track In OpenFileDialog1.FileNames
                ListBox1.Items.Add(track)
            Next
            ListBox1.SelectedIndex = 1
            Button2.Text = System.IO.Path.GetFileName(ListBox1.SelectedItem)
        ElseIf Button4.Text = "Leeg" Then
            For Each track In OpenFileDialog1.FileNames
                ListBox2.Items.Add(System.IO.Path.GetFileName(track))
            Next
            For Each track In OpenFileDialog1.FileNames
                ListBox2.Items.Add(track)
            Next
            ListBox2.SelectedIndex = 1
            Button4.Text = System.IO.Path.GetFileName(ListBox2.SelectedItem)
        ElseIf Button3.Text = "Leeg" Then
            For Each track In OpenFileDialog1.FileNames
                ListBox3.Items.Add(System.IO.Path.GetFileName(track))
            Next
            For Each track In OpenFileDialog1.FileNames
                ListBox3.Items.Add(track)
            Next
            ListBox3.SelectedIndex = 1
            Button3.Text = System.IO.Path.GetFileName(ListBox3.SelectedItem)
        ElseIf Button7.Text = "Leeg" Then
            For Each track In OpenFileDialog1.FileNames
                ListBox4.Items.Add(System.IO.Path.GetFileName(track))
            Next
            For Each track In OpenFileDialog1.FileNames
                ListBox4.Items.Add(track)
            Next
            ListBox4.SelectedIndex = 1
            Button7.Text = System.IO.Path.GetFileName(ListBox4.SelectedItem)
        ElseIf Button8.Text = "Leeg" Then
            For Each track In OpenFileDialog1.FileNames
                ListBox5.Items.Add(System.IO.Path.GetFileName(track))
            Next
            For Each track In OpenFileDialog1.FileNames
                ListBox5.Items.Add(track)
            Next
            ListBox5.SelectedIndex = 1
            Button8.Text = System.IO.Path.GetFileName(ListBox5.SelectedItem)
        Else
            MsgBox("Geen knop meer beschikbaar")
        End If
    End Sub

    

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.URL = ListBox1.SelectedItem
    End Sub


    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        AxWindowsMediaPlayer2.URL = ListBox2.SelectedItem
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        AxWindowsMediaPlayer3.URL = ListBox3.SelectedItem
    End Sub

    

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        AxWindowsMediaPlayer4.URL = ListBox4.SelectedItem
    End Sub

    Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
        AxWindowsMediaPlayer5.URL = ListBox5.SelectedItem
    End Sub

    Private Sub ListBox1_DragDrop(sender As Object, e As DragEventArgs) Handles ListBox1.DragDrop
        Dim Files As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
        For Each FileName As String In Files
            ListBox1.Items.Add(FileName)
        Next
    End Sub

    

End Class
 
Laatst bewerkt:
Hoi,

Je kan met codes een windowsmediaplayer aanmaken:
[CPP] Private Sub Play(ByVal Path As String)
Dim MediaPlayer As New AxWindowsMediaPlayer

Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
CType(MediaPlayer, System.ComponentModel.ISupportInitialize).BeginInit()
MediaPlayer.OcxState = CType(Resources.GetObject("AxWindowsMediaPlayer1.OcxState"), System.Windows.Forms.AxHost.State)
MediaPlayer.Visible = False
AddHandler MediaPlayer.PlayStateChange, AddressOf PlayStateChange
Me.Controls.Add(MediaPlayer)
CType(MediaPlayer, System.ComponentModel.ISupportInitialize).EndInit()

MediaPlayer.URL = Path
End Sub

Private Sub PlayStateChange(ByVal sender As Object, ByVal e As _WMPOCXEvents_PlayStateChangeEvent)
If TypeOf sender Is AxWindowsMediaPlayer Then
Dim MediaPlayer As AxWindowsMediaPlayer = CType(sender, AxWindowsMediaPlayer)

If MediaPlayer.playState = WMPLib.WMPPlayState.wmppsMediaEnded Or MediaPlayer.playState = WMPLib.WMPPlayState.wmppsStopped Then
Me.Controls.Remove(MediaPlayer)
MediaPlayer.Dispose()
End If
End If
End Sub

''// zo aan te roepen:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Play("Path")
End Sub[/CPP]

Het gaat niet zo makkelijk als met de meeste componenten en je moet de juiste imports hebben ("Imports AxWMPLib"), maar bij mij werkte het dan wel.

De makkelijkste manier om alle references te importeren is om eerst een mediaplayer op je form te zetten en die er dan weer af te halen. Dan worden gelijk de goede references geïmporteerd :)

Succes!:thumb:
MartinJM
 
Ik heb de windowsmediaplayer al erin staan, je kunt deze ook gewoon invoegen.
Maar hij speelt maar maximaal 2 tegelijk af
 
Hoi,

De code uit mijn vorige post maakt voor ieder muziekje een nieuwe mediaspeler aan. Aangezien je er heel veel tegelijk van kan maken, zal je dan een heleboel muziekjes tegelijk kunnen afspelen.

MartinJM
 
Even op de "boeren" wijze een voorbeeldje
De button wordt rood als het betreffende muziekje loopt, klik je nog een keer op de button dan stopt het.
Je kunt ze ook allemaal door elkaar laten spelen.

Plaats in een form de mediaplayer
kopieer en plak deze (net zo vaak als het aantal players dat je wilt hebben)
stel dat je er zo 10 hebt gedaan:
Op de zelfde wijze plaats je 10 buttons
Code:
dim IsPlaying(0 to 9) as integer
dim rood as long
dim groen as long

Private Sub Form_Load()
For a = 0 To 9       '9 mediaplayers / buttons
        Command1(a).Value = False
        Command1(a).BackColor=groen
        WindowsMediaPlayer1(a).URL = ""
        WindowsMediaPlayer1(a).Visible = False
        WindowsMediaPlayer1(a).settings.autoStart = False
        WindowsMediaPlayer1(a).settings.volume = 80
Next a
' players vullen met de jingle
windowsmediaplayer1(0).url="bestandje.mp3"
windowsmediaplayer1(1).url="nogeentje.mp3"
'enz tm
windowsmediaplayer1(9).url="byebye.mp3"
'
'nu even de naam van het bestand in de buttons zetten
'kun je handmatig doen met  command1(0).caption ="bestandje" 


End sub


Private Sub Command1_Click(Index As Integer)
    '
        If Command1(Index).Value = True And IsPlaying(Index) = 0 Then
            If WindowsMediaPlayer1(Index).URL <> "" Then
                WindowsMediaPlayer1(Index).Controls.stop
                WindowsMediaPlayer1(Index).Controls.play
                IsPlaying(Index) = 1
                Command1(Index).BackColor = Rood
            
            End If
        ElseIf Command1(Index).Value = True And IsPlaying(Index) = 1 Then
            WindowsMediaPlayer1(Index).Controls.stop
            IsPlaying(Index) = 0
            Command1(Index).BackColor = Groen
        End If
   
End Sub
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan