Odtwarzacz MP3 Visual Basic

0

Witam!

Piszę odtwarzacz w Microsoft Visual Basic 2010 Express. Sporo już mam, ale nie mogę sobie poradzić z paskiem przewijania, tj. pasek, który przesuwa się razem z piosenką.

W Winampie to jest ten pasek:
http://img207.imageshack.us/img207/8346/beztytuuyj.jpg

kari8823

0

To jest cały kod programu:

 Public Class Form1

    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk

        For Each track As String In OpenFileDialog1.FileNames
            ListBox1.Items.Add(track)
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        AxWindowsMediaPlayer1.Ctlcontrols.stop()
    End Sub

    Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click
        OpenFileDialog1.ShowDialog()
    End Sub

    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
        Application.Exit()
    End Sub




    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
    End Sub

    Private Sub TrackBar2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar2.Scroll
        AxWindowsMediaPlayer1.settings.balance = TrackBar2.Value
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TrackBar1.Value = AxWindowsMediaPlayer1.settings.volume

        TrackBar2.Value = AxWindowsMediaPlayer1.settings.balance
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Refresh()
    End Sub


    Private Sub MikserGłośnościToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MikserGłośnościToolStripMenuItem.Click
        System.Diagnostics.Process.Start("C:\Windows\System32\SndVol.exe")
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If AxWindowsMediaPlayer1.settings.mute = True Then
            AxWindowsMediaPlayer1.settings.mute = False
        Else
            AxWindowsMediaPlayer1.settings.mute = True

        End If

    End Sub


    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        AxWindowsMediaPlayer1.Ctlcontrols.fastForward()
    End Sub



    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        AxWindowsMediaPlayer1.Ctlcontrols.pause()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        AxWindowsMediaPlayer1.Ctlcontrols.fastReverse()
    End Sub

 

  

End Class
0

Zgodnie z dokumentacją klasa AxWindowsMediaPlayer ma property Ctlcontrols typu IWMPControls, czego używasz (pause(), fastforward()).

IWMPControls posiada coś takiego jak currentPosition, które ustawia (albo pobiera) aktualną pozycję w piosence (w sekundach). Aby pobrać długość trwania aktualnej piosenki możesz użyć AxWindowsMediaPlayer1.currentMedia.duration (w sekundach). Jako pasek postępu nada się mniej więcej kontrolka TrackBar.

Po załadowaniu piosenki należy w tym TrackBar ustawić Maximum na długość trwania piosenki. A żeby w trakcie trwania utworu aktualizować pozycję TrackBara (właściwość Value) - powinno być jakieś zdarzenie, ale jak widzę, jeden z przykładów na MSDN używa do tego celu Timera aktualizowanego co sekundę: http://msdn.microsoft.com/en-us/library/dd564739%28VS.85%29.aspx. Co sekundę Timer wykonuje przypisanie czasu do tekstu - u ciebie będzie do wartość TrackBara.

Żeby zrobić zmianę pozycji utworu przesuwaniem trackbara - oprogramuj jego zdarzenie Scroll i ustawiaj AxWindowsMediaPlayer1.Ctlcontrols.currentPosition na odpowiedniej sekundzie.

0

Dziękuję za odpowiedź, ale jakoś mi nie wychodzi. Jeżeli mógłbyś wyjaśnić krok po kroku jak to zrobić to będę wdzięczny

0

Nikt nie pomoże?

Myślę, że nie jest to trudne, ale ja dobiero zaczynam w Visual Basic i tego nie umiem...

0

Ponawiam moje pytanie. Czy ktoś pomoże?

Bardzo mi na tym zależy

1 użytkowników online, w tym zalogowanych: 0, gości: 1