Rubrik: Audio & Multimedia | 15.04.02 |
PlaySound-Funktion Diese Funktion spielt einen Sound aus einer Datei, einer Ressource, dem Speicher oder einen der Ereignissounds ab, wobei noch zusätzliche Optionen zu der Wiedergabe eingestellt werden können. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 21.874 |
Deklaration:
Declare Function PlaySound Lib "winmm.dll" _ Alias "PlaySoundA" ( _ lpszName As Any, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long
Beschreibung:
Diese Funktion spielt einen Sound aus einer Datei, einer Ressource, dem Speicher oder einen der Ereignissounds ab, wobei noch zusätzliche Optionen zu derWiedergabe eingestellt werden können.
Parameter:
lpszName | Erwartet den Soundnamen der abgespielt werden soll, genauere Informationen findenSie bei den Konstanten. |
hModule | Erwartet das Handle eines Moduls (DLL, OCX oder EXE Datei), wenn ein Sound aus einer Ressource abgespielt werden soll. |
dwFlags | Erwartet eine oder eine Kombination aus mehreren der "dwFlags"-Konstanten, diebeschreiben wie die Sounddatei zu laden ist und welche Optionen bei der Wiedergabe zu beachten sind. |
dwFlags Konstanten:
Const SND_ALIAS = &H10000 ' der angegebene Name muss ein Eintrag aus der WIn.ini unter [Sounds] sein Const SND_ALIAS_ID = &H110000 ' der angegebene Name muss ein Key aus der Win.ini unter [Sounds] sein Const SND_APPLICATION = &H80 ' der angegebene Name ist ein Ereignissound Const SND_ASYNC = &H1 ' stoppt die Wiedergabe aller Sounddateien um diese abzuspielen Const SND_FILENAME = &H20000 ' der angegebene Name ist ein Pfad zu einer Wave-Datei Const SND_LOOP = &H8 ' wiederholt unendlich oft die Wiedergabe Const SND_MEMORY = &H4 ' der angegebene Name ist ein Byte Array mit den Wave-Datei-Daten Const SND_NODEFAULT = &H2 ' spielt keinen Standardsound ab, wenn die angegebene Datei nicht gefunden wird Const SND_NOSTOP = &H10 ' stoppt keine momentan laufenden Sounds Const SND_NOWAIT = &H2000 ' wartet nicht auf das Beenden des laufenden Sounds um dann den angegebenen Sound abzuspielen Const SND_PURGE = &H40 ' Stoppt die unendliche Wiedergabe der Sounds, die mit SND_LOOP eingeleitet wurde Const SND_RESOURCE = &H40004 ' der angegebene Name ist der Name einer Ressource in der sich die Wave-Datei ' befindet, hierfür muss hModule das Modul Handle der Anwendung bekommen ' die die Ressource besitzt Const SND_SYNC = &H0 ' die Funktion kehrt erst nach Beenden der Wiedergabe des Sounds zurück
Rückgabewert:
Ist die Funktion erfolgreich so ist der Rückgabewert "ungleich 0", andernfalls wird derWert "0" zurückgegeben.
Beispiel:
Private Declare Function PlaySound Lib "winmm.dll" _ Alias "PlaySoundA" ( _ lpszName As Any, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long Private Declare Function GetModuleHandle Lib "kernel32" _ Alias "GetModuleHandleA" ( _ ByVal lpModuleName As String) As Long Private Const SND_ALIAS = &H10000 ' der angegebene Name muss ein Eintrag aus der ' WIn.ini unter [Sounds] sein Private Const SND_ALIAS_ID = &H110000 ' der angegebene Name muss ein Key aus der ' Win.ini unter [Sounds] sein Private Const SND_APPLICATION = &H80 ' der angegebene Name ist ein Ereignissound Private Const SND_ASYNC = &H1 ' Stoppt die Wiedergabe aller Sounddateien, um diese abzuspielen Private Const SND_FILENAME = &H20000 ' der angegebene Name ist ein Pfad zu einer ' Wave-Datei Private Const SND_LOOP = &H8 ' wiederholt unendlich oft die Wiedergabe Private Const SND_MEMORY = &H4 ' der angegebene Name ist ein Byte Array mit den ' Wave-Datei-Daten Private Const SND_NODEFAULT = &H2 ' spielt keinen Standardsound ab wenn die ' angegebene Datei nicht gefunden wird Private Const SND_NOSTOP = &H10 ' stoppt keine momentan laufenden Sounds Private Const SND_NOWAIT = &H2000 ' wartet nicht auf das Beenden des laufenden Sounds ' um dann den angegebenen Sound abzuspielen Private Const SND_PURGE = &H40 ' stoppt die unendliche Wiedergabe der Sounds, die mit ' SND_LOOP eingeleitet wurde Private Const SND_RESOURCE = &H40004 ' der angegebene Name ist der Name einer ' Ressource in der sich die Wave-Datei befindet, hierfür muss hModule das ' Modul-Handle der Anwendung bekommen, die die Ressource besitzt Private Const SND_SYNC = &H0 ' die Funktion kehrt erst nach Beenden der Wiedergabe ' des Sounds zurück
' Tata direkt aus der Datei abspielen, ohne auf Beenden des Sounds zu warten Private Sub Command1_Click() Dim Retval As Long ' spielt den Sound ab und bricht den Vorgang ab, wenn diese Funktion erneut ' aufgerufen wird, bevor der Sound komplett abgespielt wurde Retval = PlaySound(ByVal "c:\windows\media\tada.wav", 0&, SND_ASYNC Or _ SND_FILENAME Or SND_NODEFAULT) End Sub
' Tata aus einer Variable abspielen Private Sub Command2_Click() Dim Retval As Long, FFile As Long, MemWav() As Byte ' öffnen der Datei und übertragen in MemWav FFile = FreeFile Open "c:\windows\media\tada.wav" For Binary As FFile ReDim MemWav(LOF(FFile)) Get FFile, , MemWav() Close FFile ' abspielen von Tata aus dem Speicher und auf Beenden des Sounds warten Retval = PlaySound(MemWav(0), 0&, SND_MEMORY Or SND_NODEFAULT) End Sub
' Tata aus der Ressource abspielen (funktioniert nicht in der IDE) Private Sub Command3_Click() Dim Retval As Long, hModule As Long ' Modulhandle der Anwendung ermitteln hModule = GetModuleHandle(App.EXEName) ' Sound abspielen, aber bei erneutem Aufruf den momentan laufenden Sound ' nicht abbrechen Retval = PlaySound(ByVal "Tata", hModule, SND_RESOURCE Or SND_NOSTOP Or _ SND_ASYNC Or SND_NODEFAULT) If Retval = 0 Then MsgBox "Das Programm wird in der IDE ausgeführt oder die Ressource mit _ dem Titel ""Tata"" wurde nicht gefunden.", vbInformation, "Achtung" End If End Sub
' Tata anhand des systemweiten Alias Strings abspielen falls vorhanden (Tata ist in ' der Regel der Sound der erklingt wenn Windows beendet wird.) Private Sub Command4_Click() Dim Retval As Long ' spielt den Sound ab und bricht den Vorgang ab, wenn diese Funktion erneut ' aufgerufen wird, bevor der Sound komplett abgespielt wurde Retval = PlaySound(ByVal "SystemExit", 0&, SND_ASYNC Or SND_APPLICATION Or SND_NODEFAULT) End Sub