SoundPlay 함수를 이용해서 mp3재생기를 만들어 보겠습니다.
일단 먼저 MP3 파일의 목록을 만들어 보겠습니다.
Local $sDir, $sPath, $cmd, $hFile, $iFiles = 0, $mp3
;MP3 목록만들기
$sDir = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "My Music")
$sDir = FileSelectFolder("재생할 폴더를 선택해 주세요" & @LF & "기본 : 내 음악", "", BitOR(2, 4), $sDir)
If @error = 1 Then Exit
$sPath = @TempDir & "\mp3list.txt"
$cmd = @ComSpec & " /c dir """ & $sDir & "\*.mp3"" /b /s > """ & $sPath & """"
RunWait($cmd, @WorkingDir, @SW_HIDE)
Autoit 자제를 이용해서 한번에 모든 변수를 구할 방법도 있으나,
이번에는 간단히 도스의 Dir 명령을 이용해 mp3파일을 구해 보도록 해 보겠습니다.
$cmd = @ComSpec & " /c dir """ & $sDir & "\*.mp3"" /b /s > """ & $sPath & """"
$sDir 에서 *.mp3 확장자를 가진 파일을 $sPath 에 저장합니다.
이제 생성된 파일을 이용해서 파일 전체 줄 수를 구해 보겠습니다.
;MP3 목록의 파일갯수 구하기
$hFile = FileOpen($sPath, 0)
If $hFile = -1 Then Exit
While 1
FileReadLine($hFile)
If @error = -1 Then
FileClose($hFile)
ExitLoop
Else
$iFiles += 1
EndIf
WEnd
FileReadLine를 이용해서 특정한 줄을 얻어오는 방법입니다.
파일전체를 읽어와서 @LF의 갯수를 구하는 방식이라 CPU를좀 먹습니다.
그래서 와 를 이용해서 간단하게 파일을 읽어서 파일의 줄 수를 구합니다.
파일 전체를 Array로 받아오려면, _FileReadToArray를 사용하면 되겠습니다만 간단히 재생을 위해서 여기서는 사용을 하지 않겠습니다.
중간에 "If $hFile = -1 Then Exit" 라는 분기문이 있습니다.
특별히 파일의 생성유무를 확인하는 FileExists가 없는데, 그 이유가 이부분 때문입니다.
파일이 없을경우 "-1"를 반환해서 딱히 필요가 없거든요.
이제 특정한 줄을 읽어서 반환하는 함수인 "FileReadLine"를 사용해보겠습니다.
;재생하기 (랜덤)
While 1
$i = Random(1, $iFiles, 1)
$mp3 = FileReadLine($sPath, $i)
ConsoleWrite(StringFormat("no%03d | %s\n", $i, $mp3))
SoundPlay($mp3, 1)
WEnd
;재생하기 (순차)
For $i = 1 To $iFiles
$mp3 = FileReadLine($sPath, $i)
ConsoleWrite(StringFormat("no%03d | %s\n", $i, $mp3))
SoundPlay($mp3, 1)
Next
두가지 예제 입니다.
하나는 순차재생이고 하나는 랜덤재생입니다. $i를 만드는 방법에 따른 차이 입니다.
Random(1, $iFiles, 1)을 통하여 만들면, "1" ~ "$iFiles" 까지중 임의 번호를 만드는 것이고
(마지막 ", 1"은 정수를 반환하기 위함입니다. 기본은 소수점 까지 반환을 합니다.)
For ... Next 것을 통해 만들면 "1" ~ "$iFiles" 까지 +1 씩 증가하는 값입니다.
이 소스의 핵심부분인 FileReadLine($sPath, $i) 입니다.
$mp3 = FileReadLine($sPath, $i)
는 FileReadLine를 이용해서 $sPath에서 $i 번째 줄을 읽어오는 명령입니다.
그리고, SoundPlay 를 사용해서 mp3를 재생이 완료될때까지 기다리게 하기 위해 ", 1)"를 추가하면 됩니다.
Sleep(30 * 1000)
이렇게 처리를 해주면 모든 파일을 30초 미리 듣기가 되겠습니다.
'AutoIt Example' 카테고리의 다른 글
autoit-v3.3.10.0 (1) | 2013.12.28 |
---|---|
파일명 변경하기 (1) | 2008.12.25 |
한글의 변환 (2) | 2008.10.25 |
Autoit으로 트레이 런쳐 만들어 보기.. (11) | 2008.06.16 |
[예제] @GUI_DRAGFILE (0) | 2008.01.23 |