vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Audio & Multimedia15.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, WinMEViews:  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:
lpszNameErwartet den Soundnamen der abgespielt werden soll, genauere Informationen findenSie bei den Konstanten.
hModuleErwartet das Handle eines Moduls (DLL, OCX oder EXE Datei), wenn ein Sound aus einer Ressource abgespielt werden soll.
dwFlagsErwartet 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

 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.