#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
	Local $iExtended = @extended ; сохраняет значение, потому что @extended может измениться после DllCall
	Local $tText = DllStructCreate("char[128]")
	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

_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