RSS
StartseiteKnowledge LibraryTop 10Impressum

2.10 Wie spiele ich einen Wave - Sound ab?

VB4-VB6

Von: Thorsten Dörfler

Um einen einfachen Wave - Sound abzuspielen, kann man sich des PlaySound API bedienen:

' Deklaration:
Private Declare Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" ( _
        ByVal lpszSoundName As Any, _
        ByVal uFlags As Long _
              ) As Long

' Flag Werte für den Parameter uFlags:
Private Const SND_SYNC As Long= &H0   ' spielt den Sound synchron (Standard)
Private Const SND_ASYNC As Long = &H1 ' spielt den Sound ansynchron
Private Const SND_LOOP As Long = &H8  ' wiederholt die Wiedergabe bis
                                      ' sndPlaySound erneut aufgerufen wurde
Private Const SND_PURGE As Long = &H40
Private Const SND_FILENAME As Long = &H20000

Aufruf:

Sound abspielen:

PlaySound CStr("[Pfad-/Dateiname]"), 0, SND_FILENAME Or SND_ASYNC

Sound endlos abspielen:

PlaySound CStr("[Pfad-/Dateiname]"), 0, SND_FILENAME Or SND_LOOP Or SND_ASYNC

Sound stoppen:

PlaySound CLng(0), 0, SND_PURGE

Eingebettete Wave-Datei

Sie können die Wave-Datei auch in Ihre Anwendung einbetten. Fügen Sie dazu die Wave-Datei im Ressourcen-Editor (unter Add-Ins) - über "Benutzerdefiniert" ein. Die Wave-Ressource ist jetzt im Knoten "Custom" eingeordnet. Wählen Sie die Ressource aus, wählen Eigenschaften und änderen Sie den Typ in "WAVE".

Zum Abspielen direkt aus der Anwendungsressource, bedarf es nur eines leicht geänderten Aufrufs der o.g. PlaySound API Funktion:

 ' Ergänzende Deklaration:
Private Const SND_RESOURCE As Long = &H40004

Abspielen der Wave-Ressource mit der ID '101':

PlaySound CLng(101), App.hInstance, SND_RESOURCE Or SND_ASYNC

Abspielen der Wave-Ressource mit der ID '101':

PlaySound CLng(101), App.hInstance, SND_RESOURCE Or SND_LOOP Or SND_ASYNC

Sound stoppen:

PlaySound CLng(0), 0, SND_PURGE

Dies funktioniert jedoch erst in der kompilierten Anwendung, da VB während des Debuggens die Ressourcen anders verwaltet, als es in der kompilierten Anwendung der Fall ist.