_SoundSeek
Устанавливает текущую позицию (по времени) звука.
#include <Sound.au3>
_SoundSeek(ByRef $aSnd_id, $iHour, $iMin, $iSec)
Параметры
$aSnd_id | Sound ID массив, возвращённый функцией _SoundOpen() |
$iHour |
Час |
$iMin |
Минута |
$iSec |
Секунда |
Возвращаемое значение
Успех: | Возвращает 1 |
Ошибка: | Возвращает 0 и устанавливает @error |
@error: | 1 = Сбой |
3 = Неверный Sound ID. Используйте массив, возвращённый функцией _SoundOpen(). |
Примечания
После использования _SoundSeek() для установки позиции звука, необходимо использовать _SoundPlay(), чтобы возобновить воспроизведение.См. также
_SoundPlayПример
#include <Sound.au3>
Local $sPath = _GetMaxFile(@WindowsDir & '\media', '*.wav')
If @error Then Exit
; Открывает звуковой файл
Local $aSound = _SoundOpen($sPath)
If @error = 2 Then
MsgBox(4096, "Error", "Файл не существует")
Exit
ElseIf @extended Then
$iExtended = @extended ; сохраняет значение, потому что @extended может измениться после DllCall
$tText = DllStructCreate("char[128]")
$errorstring = DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $iExtended, "ptr", DllStructGetPtr($tText), "int", 128)
MsgBox(4096, "Ошибка", "Не удалось открыть." & @CRLF & _
"Номер ошибки: " & $iExtended & @CRLF & _
"Описание ошибки: " & DllStructGetData($tText, 1) & @CRLF & _
"Обратите внимание: звук еще может быть корректно воспроизведён.")
Else
MsgBox(4096, "Успешно", "Файл открыт успешно")
EndIf
_SoundPlay($aSound, 0)
; Воспроизводит звук 1 секунду
Sleep(1000)
; Устанавливает позицию звука на 2-й секунде
_SoundSeek($aSound, 0, 0, 2)
ConsoleWrite("После _SoundSeek: " & _SoundPos($aSound, 2) & " _SoundStatus: " &_SoundStatus($aSound)& @CRLF)
_SoundSeek($aSound, 0, 0, 1)
ConsoleWrite("После _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)
Func _GetMaxFile($sPath, $sMask)
Local $aFileList = _FileListToArray($sPath, $sMask, 1)
If @error Then SetError(1)
Local $iSize = 0, $sFile = '', $iSizeTmp
For $i = 1 To $aFileList[0]
$iSizeTmp = FileGetSize($sPath & '\' & $aFileList[$i])
If $iSizeTmp > $iSize Then
$sFile = $aFileList[$i]
$iSize = $iSizeTmp
EndIf
Next
Return $sPath & '\' & $sFile
EndFunc ;==>_GetMaxFile