Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] carica lista canzoni in mediaplayer
Forum - C# / VB.NET - [VB.NET] carica lista canzoni in mediaplayer

Avatar
pedro8a (Normal User)
Newbie


Messaggi: 1
Iscritto: 21/12/2011

Segnala al moderatore
Postato alle 11:27
Mercoledì, 21/12/2011
Ciao a tutti,
complimenti per il sito e il forum, moooolto bello e utile.

Ma veniamo al problema:

sono riuscito a leggere tutti i file audio da una cartella.
Ora però, vorrei farli caricare e suonare tutti in media player (ovviamente uno per volta e all'ultimo brano dovrebbe ricominciare).
Ho letto e riletto e preso esempi ma non ci riesco....
Un aiutino???

Dim Files() As String
'Per avere informazioni sui file
Dim f As FileInfo
Dim Cartella As String = Application.StartupPath & "\Musica"

Files = Directory.GetFiles(Cartella)
For Each sFile As String In Files
f = New FileInfo(sFile)
TextBox1.Text = TextBox1.Text & " " & f.Name
WMP.URL = Cartella & "\" & f.Name

Next
WMP.Ctlcontrols.play()

PM
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 21:39
Mercoledì, 21/12/2011
Il problema è che con quel sorgente imposti la url del lettore per ogni file e poi avvii la riproduzione, quindi avvii l'ultimo (cioè, mettiamo che gli url dei files siano x, y e z: il ciclo imposta come url x, poi y, e poi z, quindi avvia la riproduzione: verrà riprodotto solo z). Dovresti caricare solo il primo url, poi, quando la riproduzione del primo file è finita, caricare il secondo e così via. Ora, io non so quale sia l'evento del controllo windows media player che viene scatenato alla fine della riproduzione poichè per la multimedialità ho sempre usato DirectX, quindi prova a guardare la documentazione: sicuramente ci sarà questo evento, a cui dovrai associare l'avvio del prossimo file. Ti scrivo un po' di codice di esempio:
Codice sorgente - presumibilmente VB.NET

  1. 'fuori da ogni sub o function (variabili globali):
  2. Dim files() As String 'lista dei files
  3. Dim NowPlaying as Integer 'id del file correntemente in riproduzione
  4.  
  5. 'nella sub di caricamento dei files (es. Form_Load):
  6. Dim Files() As String
  7. Dim Cartella As String = Application.StartupPath & "\Musica"
  8. Files = Directory.GetFiles(Cartella)
  9. NowPlaying = 0
  10.  
  11. 'nella sub di avvio riproduzione (evento tasto play):
  12. Play()
  13.  
  14. 'nell'evento di fine brano:
  15. If NowPlaying = files.Count - 1 Then 'se il contatore è all'ultimo brano
  16.  NowPlayIng = 0 'allora lo azzera
  17. Else 'altrimenti
  18.  NowPlaying +=1 'lo incrementa di uno
  19. End If
  20. Play()
  21.  
  22. 'sub di riproduzione:
  23. Sub Play()
  24.  Dim f As FileInfo
  25.  f = New FileInfo(files(NowPlaying))
  26.  TextBox1.Text = TextBox1.Text & " " & f.Name
  27.  WMP.URL = Cartella & "\" & f.Name
  28. End Sub


P.S.: quando scrivi codice, usa il tag code, così verra evidenziato.

Ultima modifica effettuata da GN il 21/12/2011 alle 21:41


PM
Avatar
NR2 (Normal User)
Newbie


Messaggi: 18
Iscritto: 26/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:16
Venerdì, 30/12/2011
se ho capito bene tu vuoi aprire tutti i file musicali di una cartella in una list box e poi eseguirli uno ad uno in mediaplayer.

per aprire tutti i file di una cartella e inserirli in una listbox prima di tutto vai in cima al codice sopra pubblic class form1 e scrivi:
Codice sorgente - presumibilmente C# / VB.NET

  1. imports system.io


in un button che servira per aprire la cartella dove prendere i file audio scrivi il seguente codice:
Codice sorgente - presumibilmente Delphi

  1. 'crea una finestra di dialogo per aprire la cartella che contiene i file audio
  2.  
  3.        Dim cartella As New FolderBrowserDialog
  4.        'crea array
  5.         Dim canzoni() As String
  6.         'nasconde il button per creare una nuocva cartella
  7.        cartella.ShowNewFolderButton = False
  8.        'apre la finestra di dialog dove dovra essere selezionata la cartella
  9.         cartella.ShowDialog()
  10.         'preleva i file dalla cartella impostata e li mette nella array canzoni
  11.        canzoni = Directory.GetFiles(cartella.SelectedPath)
  12.        'esegue il ciclo per inserire tutti i file presenti in canzoni nella listbox
  13.         For Each canzone As String In canzoni
  14.             ListBox1.Items.Add(canzone)
  15.         Next


ora per avviare le canzoni clicca 2 volte sulla listbox e inserisci il codice che segue
Codice sorgente - presumibilmente VB.NET

  1. Try
  2.             AxWindowsMediaPlayer1.URL = ListBox1.Text
  3.         Catch ex As Exception
  4.  
  5.         End Try


ok ora aggiungi un timer che servirà per mandare avanti le canzoni una volta finite nelle proprietà a enabled metti true e inserisci il codice sotto
Codice sorgente - presumibilmente VB.NET

  1. 'se mediaplayer si stoppa
  2.         If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
  3.             'allora
  4.             Try
  5.                 'vai avanti
  6.                 ListBox1.SelectedIndex = ListBox1.SelectedIndex + 1
  7.             Catch ex As Exception
  8.                 'se non puoi andare avanti torna da capo
  9.                 ListBox1.SelectedIndex = 0
  10.             End Try
  11.         End If


adesso puoi aggiungere 2 button un button di nome "Avanti" e un button di nome "Indietro"
nel button "Avanti" che serve per mandare avanti la canzone scrivi
Codice sorgente - presumibilmente VB.NET

  1. Try
  2.             'vai alla prossima canzone
  3.             ListBox1.SelectedIndex = ListBox1.SelectedIndex + 1
  4.         Catch ex As Exception
  5.             'se non puoi andare alla prossima canzone torna da capo
  6.             ListBox1.SelectedIndex = 0
  7.         End Try


e nel button "Indietro" scrivi
Codice sorgente - presumibilmente VB.NET

  1. Dim x As Integer = ListBox1.Items.Count
  2.         Try
  3.             'vai indietro di una canzone
  4.             ListBox1.SelectedIndex = ListBox1.SelectedIndex - 1
  5.         Catch ex As Exception
  6.             'se non puoi andare indietro vai a l'ultima canzone
  7.             ListBox1.SelectedIndex = x - 1
  8.         End Try



spero di esserti stato utile :)

Ultima modifica effettuata da NR2 il 30/12/2011 alle 14:20
PM