Springt in einer Sounddatei zur angegebenen Position
#include <Sound.au3>
_SoundSeek ( ByRef $aSndID, $iHour, $iMin, $iSec )
$aSndID | Sound ID Array welches durch _SoundOpen() zurückgegeben wurde |
$iHour | zu der zu springenden Stunde |
$iMin | zu der zu springenden Minute |
$iSec | zu der zu springenden Sekunde |
Erfolg: | 1 |
Fehler: | 0 und setzt das @error Flag auf ungleich null |
@Error: | 1 = Fehler 3 = Ungültige Sound ID. Es ist das zurückgegebene Array von _SoundOpen() zu verwenden. |
Nachdem _SoundSeek() angewendet wurde, ist _SoundPlay() zu verwenden, um den Sound wieder abzuspielen.
Das verwenden des von _SoundOpen() zurückgegebenen Arrays ist zwingend notwendig, um sicherzustellen das die Datei unabhängig vom Enkodiertyp an der richtigen Position weitergespielt wird. Das ID-Arrays sollte durch die Funktion aktualisiert werden, wenn der VBR Zeitkorrekturfaktor geändert wurde.
#include <MsgBoxConstants.au3>
#include <Sound.au3>
Local $sound = _SoundOpen(@WindowsDir & "\media\Windows XP Startup.wav")
If @error = 2 Then
MsgBox($MB_SYSTEMMODAL, "Fehler", "Die Datei existiert nicht.")
Exit
ElseIf @extended <> 0 Then
Local $iExtended = @extended ; Zuweisung, weil @extended nach DllStructCreate() geändert wird
Local $stText = DllStructCreate("char[128]")
DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $iExtended, "struct*", $tText, "int", 128)
MsgBox($MB_SYSTEMMODAL, "Fehler", "Öffnen fehlgeschlagen." & @CRLF & "Fehlernummer: " & $iExtended & @CRLF & "Fehlerbeschreibung: " & DllStructGetData($stText, 1) & @CRLF & "Beachte: Möglicherweise kann der Sound dennoch korrekt abgespielt werden.")
Else
MsgBox($MB_SYSTEMMODAL, "Erfolgsmeldung", "Die Datei wurde erfolgreich geöffnet.")
EndIf
_SoundPlay($sound, 0)
; Spielt 1 Sekunde des Sounds ab
Sleep(1000)
; Springt zur 2. Sekunde des Sounds und setzt die Wiedergabe ab dort fort
_SoundSeek($sound, 0, 0, 2)
ConsoleWrite("Nach _SoundSeek: " & _SoundPos($sound, 2) & " _SoundStatus: " & _SoundStatus($sound) & @CRLF)
_SoundSeek($sound, 0, 0, 1)
ConsoleWrite("Nach _SoundSeek1: " & _SoundPos($sound, 2) & " _SoundStatus: " & _SoundStatus($sound) & @CRLF)
_SoundPlay($sound, 0)
While 1
Sleep(100)
If _SoundPos($sound, 2) >= _SoundLength($sound, 2) Then ExitLoop
WEnd
_SoundClose($sound)