logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak odtworzyć muzykę w Visual Basic po naciśnięciu przycisku?

Bartek_Wosik 07 Maj 2005 15:57 5726 8
REKLAMA
  • #1 1469979
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Witam!
    Mam pytanie jak zrobić w visual basicu, żeby po naciśnieciu przycisku została odtworzona muzyka i żeby grała w trakcie dzialania programu. Jest dla mnie bez roznicy czy bedzie odtwarzany plik *.wave czy *.mp3.
    Prosze o pomoc i pozdrawiam , Bartek
  • REKLAMA
  • Pomocny post
    #2 1470655
    jotbeage
    Poziom 12  
    Posty: 14
    Pomógł: 1
    Odpowiedz tyczy sie Visual Basic 6, na pasku z komponentami kliknij prawym przyciskiem i wybierz "Components...", na liscie znajdz WindowsMediaPlayer, zaznacz i kliknij OK. Do przycisku wklej kod
    'WindowsMediaPlayer1.openPlayer "c:\mojamuza.mp3" '
    W zaleznosci od wersji komenda moze sie roznic. Jezeli ta nie dziala wpisz "WindowsMediaPlayer1." i nacisnij CTRL + J zeby zobaczyc wszystkie mozliwe komendy
  • REKLAMA
  • Pomocny post
    #3 1470732
    amator
    Poziom 22  
    Posty: 677
    Pomógł: 29
    Ocena: 37
    Witam.
    Tak jak napisał poprzednik - można wykorzystać kontrolke Media Player ale to raczej zły pomysł chociaż prosty do zrealizowania. Sam pisałem programy wykorzystujące tą kontrolkę i muszę przyznać że nie jest to dobre rozwiązanie. Jeżeli chcesz odtwarzać pliki WAV polecam kontrolkę SoundforVB do sciągnięcia z http://vb4all.canpol.pl/ocx/soundvb.zip ( adres z serwisu VB4All). W pliku Readme jest bardzo dobrze opisane jej wykorzystanie. Pozatym można za pomocą API odtwarzać dźwięki ale nie pamiętam w tej chwili deklaracji - musiałbym poszukać.
    Pozdrawiam.
  • REKLAMA
  • #4 1471195
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Dziekuje za podpowiedzi, juz ściągnąłem tą kontrolke, umieściłem ją na formatce i nie wiem co dalej. W pliku Readme dołączonym do kontrolki jest napisane:
    "3. Jak używać

    Kontrolka jest bardzo prosta w użyciu.
    Ma tylko dwie metody: Jedna służy do
    odgrywania dźwięku (podajesz pełną
    ścieżkę lub w odniesieniu do programu),
    a druga do zatrzymywania aktualnie
    odgrywanego."

    Tylko ja nie wiem jakich poleceń użyć do odtwarzania i zatrzymywania muzyki. Według mojego wyobrażenia to wyglada w ten sposob ze jednym przyciskiem (ewentualnie poleceniem z menu) włączam odtwarzanie, a drugim przyciskiem je zatrzymuje. Chce odtwarzac tylko jeden utwor (ktory moze byc juz na stale zadeklarowany w programie) w tle, w czasie dzialania programu. Prosze w miare mozliwosci napisac kawałek kodu zawierajacy polecenia do odtwarzania i zatrzymywania.

    Pozdrawiam!
  • REKLAMA
  • #5 1471855
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Nie znam tej kontrolki ale naciskajac "F2" i wybierajac ja w okienku gdzie standardowo jest <all libraries> dowiesz sie wszystkiego

    w api wyglada to mniejwiecej tak

    Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

    lpszSoundName: służy do określenia ścieżki dostępu oraz nazwy pliku WAV, lub dźwięku systemowego Windows
    uFlags: określa w jaki sposób ma być odtwarzany dany plik WAV za pomocą flag:

    SND_ALIAS = &H10000
    określa że podany "plik WAV" jest zdarzeniem w systemie np. kliknięciem myszy
    SND_ASYNC = &H1
    odtwarza plik WAV asynchronicznie tzn. że funkcja zwraca natychmiast wartość bez czekania na zakończenie odtwarzania (nie przerywa działania programu)
    SND_FILENAME = &H20000
    oznacza że pierwszy parametr jest plikiem WAV, więc go odtwarzaj
    SND_LOOP = &H8
    dany dźwięk będzie odtwarzany bez przerwy, aż nie wywoła się funkcji sndPlaySound z lpszSoundName = "" zamiast nazwy pliku. Flaga SND_ASYNC musi być ustawiona

    SND_NODEFAULT = &H2
    jeśli nie można było znaleźć podanego dźwięku to funkcja nie odtwarza domyślnego dźwięku systemowego

    SND_NOSTOP = &H10
    nie przerywaj obecnie odtwarzanego dźwięku tzn. jeśli wywołamy ponownie funkcję podczas gdy odtwarzany jest dźwięk nie przerwie jego odtwarzania lecz wygeneruje ona błąd

    SND_NOWAIT = &H2000
    jeśli sterownik dźwięku jest zajęty, to funkcja zwraca od razu wartość FALSE bez czekania aż sterownik będzie wolny

    SND_SYNC = &H0
    odtwarza plik WAV synchronicznie tzn. że funkcja zwraca wartość dopiero po odtworzeniu całego dźwięku (wstrzymuje wykonywanie programu na czas odtwarzania dźwięk)



    Przykład:

    Dim r As Integer
    r = sndPlaySound(ByVal "C:\Wav\Start.wav", SND_SYNC + SND_NODEFAULT)
    ‘ funkcja wygeneruje błąd jeśli nie znajdzie pliku Start.wav
    ‘ program będzie działał dalej jeśli funkcja skończy odtwarzanie dźwięku


    (Wyciagniete z api http://www.vbtools.prv.pl )


    Ja urzywam directx do wszystkiego. tam mozesz z dzwiekiem zrobic wszystko od dokladnego sterowania do efektow dzwiekowych

    pozdro
  • #6 1471895
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Dzięki wszystkim za pomoc.
    Jednak zastosuje sie do sposobu amatora, bo jest znacznie prostszy i w zupełności wystarczający do mojego programu.

    Ps. Juz doszedłem jak sie korzysta z tej kontrolki :)

    Pozdrawiam, Bartek
  • #7 1716152
    skoq
    Poziom 13  
    Posty: 115
    Pomógł: 1
    Ocena: 1
    Czy moglby mi ktos wytlumaczyc jak korzystac z tej kontrolki? Dodac ja umiem i na tym sie konczy, jestem poczatkujacy wiec prosze lopatologicznie. Z gory thx :)

    P.S. Programuje VS.NET 2003
  • #8 1717801
    amator
    Poziom 22  
    Posty: 677
    Pomógł: 29
    Ocena: 37
    Witam.
    Obsługa jest banalna. Jeżeli dodałeś już tą kontrolkę do projektu i umieściłeś ją na formatce to połowę sukcesu już masz za sobą. Po prawej stronie zmien jej własnośc Name na np. sound. Napiszę ci prosty przykład sterowania. Dodaj dwa przyciski. Pierwszy niech będzie Play drugi Stop. Kliknij dwa razy na przycisku Play. Otworzy ci się widok kodu, gdzie wpisujesz:
    sound.play("c:\plik.wav")
    gdzie c:\plik.wav jest ścieżką do pliku dźwiękowego. Możesz utworzyć zmienną gdzie będzie nazwa pliku np.
    Dim splik as String
    splik = "c:\plik.wav" ' nastepnie polecenie Play
    sound.play(splik)

    Tym sposobem odtwarzasz plik WAVE. Kliknij teraz drugi przycisk. Wpisz kod:
    i tak własnie zatrzymałeś odtwarzanie.
    Bardzo proste co nie? :)
    Pozdrawiam.
  • #9 1717807
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    jak masz juz dodaną kontrolke to klikasz na nią a potem "rysujesz" ja na formatce (tak jak robisz np z przyciskami itp) a nastepnie piszesz kod:
    Private Sub Command1_Click()
    SoundForVB1.Play "muzyka.wav"
    End Sub
    Wówczas po naciśnięciu przycisku zostanie odtworzona muzyka. "muzyka.wav" to nazwa pliku.
    Aby zatrzymac odtwarzanie piszesz kod:
    Private Sub Command2_Click()
    SoundForVB1.Stop "muzyka.wav"
    End Sub
    wówczas po naciśnięciu przycisku 2 muzyka przestanie byc odtwarzana.

    Pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy sposobów odtwarzania muzyki w Visual Basic po naciśnięciu przycisku, z możliwością odtwarzania plików WAV lub MP3 w tle podczas działania programu. Proponowane rozwiązania obejmują użycie kontrolki Windows Media Player dostępnej w Visual Basic 6 poprzez dodanie jej z listy komponentów oraz kontrolki SoundForVB, specjalizującej się w odtwarzaniu plików WAV, którą można pobrać z serwisu VB4All. Przykładowy kod do odtwarzania i zatrzymywania muzyki za pomocą SoundForVB to wywołania metod Play i Stop z podaniem ścieżki do pliku dźwiękowego. Alternatywnie, można wykorzystać funkcję API Windows sndPlaySound z biblioteki winmm.dll do asynchronicznego odtwarzania plików WAV z opcją pętli. W Visual Basic .NET 2003 również można używać kontrolki SoundForVB, przypisując jej nazwę i wywołując metody play oraz stop w obsłudze zdarzeń przycisków. Rozwiązania te umożliwiają prostą integrację odtwarzania dźwięku w aplikacjach Visual Basic, zarówno w wersji 6, jak i .NET.
Wygenerowane przez model językowy.
REKLAMA