Seeks the sound to the specified position
#include <Sound.au3>
_SoundSeek ( ByRef $aSndID, $iHour, $iMin, $iSec )
$aSndID | Sound ID array as returned by _SoundOpen() |
$iHour | Hour to seek to |
$iMin | Minute to seek to |
$iSec | Second to seek to |
Success: | 1. |
Failure: | 0 and sets the @error flag to non-zero. |
@error: | 1 = Failure 3 = Invalid Sound ID. Use return array from _SoundOpen(). |
After using _SoundSeek() on a sound, _SoundPlay() must be used to resume playing.
The use of the ID array returned from _SoundOpen() is mandatory with this function to ensure that the file plays from the correct position regardless of encoding type.
The ID array should be updated by the function as the VBR timing correction factor may have been altered.
#include <MsgBoxConstants.au3>
#include <Sound.au3>
Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
If @error = 2 Then
MsgBox($MB_SYSTEMMODAL, "Error", "The file does not exist")
Exit
ElseIf @extended <> 0 Then
Local $iExtended = @extended ; Assign because @extended will be set after DllStructCreate().
Local $tText = DllStructCreate("char[128]")
DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $iExtended, "struct*", $tText, "int", 128)
MsgBox($MB_SYSTEMMODAL, "Error", "The open failed." & @CRLF & "Error Number: " & $iExtended & @CRLF & "Error Description: " & DllStructGetData($tText, 1) & @CRLF & "Please Note: The sound may still play correctly.")
Else
MsgBox($MB_SYSTEMMODAL, "Success", "The file opened successfully")
EndIf
_SoundPlay($aSound, 0)
; Play one second of sound.
Sleep(1000)
; Seek to 2 seconds into the sound.
_SoundSeek($aSound, 0, 0, 2)
ConsoleWrite("After _SoundSeek: " & _SoundPos($aSound, 2) & " _SoundStatus: " & _SoundStatus($aSound) & @CRLF)
_SoundSeek($aSound, 0, 0, 1)
ConsoleWrite("After _SoundSeek1: " & _SoundPos($aSound, 2) & " _SoundStatus: " & _SoundStatus($aSound) & @CRLF)
_SoundPlay($aSound, 0)
While 1
Sleep(100)
If _SoundPos($aSound, 2) >= _SoundLength($aSound, 2) Then ExitLoop
WEnd
_SoundClose($aSound)