; #Include MCI.ahk
#NoEnv
#SingleInstance Force
gui Margin,0,0
gui Add,Button,w70 h35,Open
gui Add,Button,x+0 wp hp,Play
gui Add,Button,x+0 wp hp,Pause
gui Add,Button,x+0 wp hp,Stop
gui,Add,Button,x+0 wp hp,Rev10
gui,Add,Button,x+0 wp hp,Middle
gui,Add,Button,x+0 wp hp,Fwd10
gui Show
gosub ButtonOpen
return
GUIEscape:
GUIClose:
if Open
MCI_Close(hMedia)
ExitApp
ButtonOpen:
if Open
MCI_Close(hMedia)
if not DefaultFolder
DefaultFolder:=A_MyDocuments
gui +OwnDialogs
FileSelectFile, MediaFile,1,%DefaultFolder%,Choose a media file
if MediaFile=
return
SplitPath MediaFile,,DefaultFolder
hMedia:=MCI_Open(MediaFile)
if Not hMedia
{
MsgBox Error opening media file
return
}
Open:=true
gosub ButtonPlay
return
ButtonPlay:
if Open
{
Status:=MCI_Status(hMedia)
if Status=stopped
MCI_Play(hMedia,"","NotifyEndOfPlay")
;-- Note: The callback option is used here as an example. This
; script is not a really a good example of how/where the
; callback option should be used because of all of the seek
; interruptions.
else
if Status=paused
MCI_Resume(hMedia)
}
return
ButtonPause:
if Open
{
Status:=MCI_Status(hMedia)
if Status=playing
MCI_Pause(hMedia)
else
if Status=paused
MCI_Resume(hMedia)
}
return
ButtonStop:
if Open
{
MCI_Stop(hMedia)
MCI_Seek(hMedia,0)
}
return
ButtonFwd10:
if Open
if MCI_Status(hMedia)="playing"
MCI_Seek(hMedia,MCI_Position(hMedia)+10000)
;-- Note: This seek method works for most (but not all) MCI devices
return
ButtonMiddle:
if Open
if MCI_Status(hMedia)="playing"
MCI_Seek(hMedia,MCI_Length(hMedia)/2)
;-- Note: This seek method works for most (but not all) MCI devices
return
ButtonRev10:
if Open
if MCI_Status(hMedia)="playing"
MCI_Seek(hMedia,MCI_Position(hMedia)-10000)
;-- Note: This seek method works for most (but not all) MCI devices
return
NotifyEndOfPlay(flag)
{
Global
if flag=1 ;-- 1=play ended normally
{
MCI_Stop(hMedia)
MCI_Seek(hMedia,0)
}
}
;#include MCI.ahk