home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / Video_Capt1933119162005.psc / CAPTURE / DANTEplayer.cls < prev   
Text File  |  2005-11-14  |  20KB  |  616 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "DANTEplayer"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. 'Cteated By Joko Mulyono
  15. 'Email:dantex_765@hotmail.com
  16. Option Explicit
  17. Option Compare Text
  18. Private m_AliasName     As String
  19. Private sCommand        As Long
  20. Private sDrive          As String
  21. Private nReturn         As Long
  22. Private m_LengthVideo   As String
  23. Private sFileName       As String
  24. Private m_HwndParent    As Long
  25. Public Enum MCI_COMMAND
  26.     DoorOpen
  27.     DoorClose
  28.     OpenCD
  29.     StopCD
  30.     PlayCD
  31.     seekCD
  32.     SpeedCD
  33.     CloseCD
  34.     PauseCD
  35.     ResumeCD
  36.     VideoOff
  37.     VideoOn
  38. End Enum
  39. #If False Then
  40. Private DoorOpen, DoorClose, OpenCD, StopCD, PlayCD, seekCD, SpeedCD, CloseCD, PauseCD, ResumeCD, VideoOff, VideoOn
  41. #End If
  42. Public Enum STATUS_INFO
  43.     total_length
  44.     total_frames
  45.     Mode
  46.     Position
  47.     time_format
  48.     Frame_Rate
  49.     Speed_Rate
  50.     WindowHDC
  51.     Duration
  52. End Enum
  53. #If False Then
  54. Private total_length, total_frames, Mode, Position, time_format, Frame_Rate, Speed_Rate, WindowHDC, Duration
  55. #End If
  56. Public Enum TimeFormat
  57.     ByMS
  58.     ByTMSF
  59.     byFrames
  60. End Enum
  61. #If False Then
  62. Private ByMS, ByTMSF, byFrames
  63. #End If
  64. Public Enum Vid_State
  65.     vd_On
  66.     vd_Off
  67. End Enum
  68. #If False Then
  69. Private vd_On, vd_Off
  70. #End If
  71. Private Type RECT
  72.     Left                    As Long
  73.     Top                     As Long
  74.     Right                   As Long
  75.     Bottom                  As Long
  76. End Type
  77. Public Enum MOVIEDIMENTION
  78.     mvd_Width
  79.     mvd_Height
  80. End Enum
  81. #If False Then
  82. Private mvd_Width, mvd_Height
  83. #End If
  84. Public Enum CHANELVOLUME
  85.     Chan_Right
  86.     Chan_Left
  87.     Chan_All
  88. End Enum
  89. #If False Then
  90. Private Chan_Right, Chan_Left, Chan_All
  91. #End If
  92. Public Enum xStyle
  93.     Custom = 0
  94.     Windows = 1
  95.     Desktop = 2
  96.     FScreen = 3
  97. End Enum
  98. #If False Then
  99. Private Custom, Windows, Desktop, FScreen
  100. #End If
  101. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
  102.                                                                       ByVal lpWindowName As String) As Long
  103. Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, _
  104.                                                      lpRect As RECT) As Long
  105. Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
  106.                                                                                     ByVal lpszShortPath As String, _
  107.                                                                                     ByVal cchBuffer As Long) As Long
  108. Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, _
  109.                                                                                ByVal lpstrReturnString As String, _
  110.                                                                                ByVal uReturnLength As Long, _
  111.                                                                                ByVal hwndCallback As Long) As Long
  112. Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal dwError As Long, _
  113.                                                                                        ByVal lpstrBuffer As String, _
  114.                                                                                        ByVal uLength As Long) As Long
  115. Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, _
  116.                                                       lpRect As Any, _
  117.                                                       ByVal bErase As Long) As Long
  118.  
  119. Public Property Get AliasName() As String
  120.  
  121.     AliasName = m_AliasName
  122.  
  123. End Property
  124.  
  125. Public Property Let AliasName(ByVal new_AliasName As String)
  126.  
  127.     m_AliasName = new_AliasName
  128.  
  129. End Property
  130.  
  131. Private Sub Class_Initialize()
  132.  
  133.     If LenB(AliasName) = 0 Then
  134.         AliasName = "MYPLAYER"
  135.     End If
  136.  
  137. End Sub
  138.  
  139. Public Sub CloseCapture()
  140.  
  141.     mciSendString "close VideoCapture", 0, 0, 0
  142.  
  143. End Sub
  144.  
  145. Public Property Get DeviceType() As String
  146.  
  147. Dim EXT    As String
  148. Dim Device As String
  149.  
  150.     EXT = UCase$(GetExtension(Filename))
  151.     Select Case EXT
  152.     Case "MID"
  153.         Device = "Sequencer"
  154.     Case "AIF", "AIFC", "ASX", "AU", "AVI", "DAT", "ENC", "M1V", "MID", "MOV", "MP2", "MPA", "MPE", "MPEG", "MPG", "MPM", "MPV", "MPV2", "QT", "RMI", "VOB", "WAV", "WAX", "WMA", "WMP", "WMV", "wmv", "WMX"
  155.         Device = "MPEGVideo"
  156.     Case Else
  157.         Exit Property
  158.     End Select
  159.     DeviceType = Device
  160.  
  161. End Property
  162.  
  163. Public Property Get Filename() As String
  164.  
  165. Dim Tmp     As String * 255
  166. Dim lenPath As Long
  167.  
  168.     Filename = sFileName
  169.     lenPath = GetShortPathName(Filename, Tmp, 255)
  170.     Filename = Left$(Tmp, lenPath)
  171.  
  172. End Property
  173.  
  174. Public Property Let Filename(ByVal xFile As String)
  175.  
  176.     sFileName = xFile
  177.  
  178. End Property
  179.  
  180. Public Function FormatRemain() As String
  181.  
  182. Dim nHour    As Integer
  183. Dim nMinut   As Integer
  184. Dim nSeconds As Integer
  185. Dim newTimer As Long
  186. Dim strTimer As String
  187.  
  188.     newTimer = CLng(Val(LENGTHFORMAT(ByMS)) - Val(POSFORMAT(ByMS)))
  189.     nHour = Int(newTimer / 3600)
  190.     newTimer = newTimer Mod 3600
  191.     nMinut = Int(newTimer / 60)
  192.     newTimer = newTimer Mod 60
  193.     nSeconds = newTimer
  194.     If nHour > 0 Then
  195.         strTimer = Trim$(str(nHour)) & ":"
  196.     Else
  197.         strTimer = ""
  198.     End If
  199.     If nMinut >= 10 Then
  200.         strTimer = strTimer & Trim$(str(nMinut))
  201.     ElseIf nMinut > 0 Then
  202.         strTimer = strTimer & Trim$(str(nMinut))
  203.     Else
  204.         strTimer = strTimer & "0"
  205.     End If
  206.     strTimer = Format$(strTimer, "00") & ":"
  207.     If nSeconds >= 10 Then
  208.         strTimer = strTimer & Trim$(str(nSeconds))
  209.     ElseIf nSeconds > 0 Then
  210.         strTimer = strTimer & "0" & Trim$(str(nSeconds))
  211.     Else
  212.         strTimer = strTimer & "00"
  213.     End If
  214.     FormatRemain = strTimer
  215.  
  216. End Function
  217.  
  218. Private Function GetExtension(ByVal FPath As String) As String
  219.  
  220. Dim p As Long
  221.  
  222.     If Len(FPath) > 0 Then
  223.         p = InStrRev(FPath, ".")
  224.         If p > 0 Then
  225.             If p < Len(FPath) Then
  226.                 GetExtension = Mid$(FPath, p + 1)
  227.             End If
  228.         End If
  229.     End If
  230.  
  231. End Function
  232.  
  233. Public Function getStatusInfo(ByRef Info As STATUS_INFO) As String
  234.  
  235. Dim strbuffer As String
  236.  
  237.     strbuffer = String$(256, vbNullChar)
  238.     Select Case Info
  239.     Case total_frames
  240.         mciSendString "set " & AliasName & " time format frames", strbuffer, Len(strbuffer), 0&
  241.         mciSendString "status " & AliasName & " length", strbuffer, Len(strbuffer), 0&
  242.     Case Mode 'playing,paused
  243.         mciSendString "status " & AliasName & " mode", strbuffer, Len(strbuffer), 0
  244.     Case Position
  245.         mciSendString "set " & AliasName & " time format ms", 0, 0, 0
  246.         mciSendString "status " & AliasName & " position", strbuffer, Len(strbuffer), 0
  247.         getString (strbuffer)
  248.         strbuffer = CLng(Val(strbuffer))
  249.     Case Frame_Rate
  250.         mciSendString "Status " & AliasName & " frame rate", strbuffer, Len(strbuffer), 0
  251.         strbuffer = Left$(strbuffer, InStr(strbuffer, vbNullChar) - 1)
  252.     Case Speed_Rate
  253.         mciSendString "status " & AliasName & " speed ", strbuffer, Len(strbuffer), 0
  254.         strbuffer = Val(strbuffer) / 10
  255.     Case time_format 'return : tmsf,ms
  256.         mciSendString "status " & AliasName & " time format", strbuffer, Len(strbuffer), 0
  257.     Case WindowHDC
  258.         mciSendString "status " & AliasName & " window handle", strbuffer, Len(strbuffer), 0
  259.         strbuffer = Mid$(strbuffer, 1, InStr(1, strbuffer, vbNullChar) - 1)
  260.     Case Duration
  261.         SetTimeFormat (ByMS)
  262.         mciSendString "status " & AliasName & " length", strbuffer, Len(strbuffer), 0
  263.         strbuffer = Round(Val(Mid$(strbuffer, 1, Len(strbuffer))) / 1000)
  264.     End Select
  265.     getStatusInfo = getString(strbuffer)
  266.  
  267. End Function
  268.  
  269. Public Function getString(str As String) As String
  270.  
  271. Dim a As Integer
  272.  
  273.     For a = 1 To Len(str)
  274.         If Mid$(str, a, 1) = vbNullChar Then
  275.             Exit For
  276.         End If
  277.     Next a
  278.     getString = RTrim$(Left$(str, a - 1))
  279.  
  280. End Function
  281.  
  282. Public Property Get hwndParent() As Long
  283.  
  284.     hwndParent = m_HwndParent
  285.  
  286. End Property
  287.  
  288. Public Property Let hwndParent(ByVal new_HwndParent As Long)
  289.  
  290.     m_HwndParent = new_HwndParent
  291.  
  292. End Property
  293.  
  294. Public Function LENGTHFORMAT(sFormat As TimeFormat) As String
  295.  
  296. Dim strbuffer As String
  297. Dim Sec       As Double
  298. Dim Mins      As Integer
  299. Dim str       As String * 128
  300.  
  301.     strbuffer = String$(256, vbNullChar)
  302.     mciSendString "set " & AliasName & " time format milliseconds", 0, 0, 0
  303.     Select Case sFormat
  304.     Case ByMS
  305.         mciSendString "status " & AliasName & " length", strbuffer, Len(strbuffer), 0
  306.         getString strbuffer
  307.         Sec = Round(Val(Mid$(strbuffer, 1, Len(strbuffer))) / 1000)
  308.         strbuffer = Sec
  309.     Case ByTMSF
  310.         mciSendString "status " & AliasName & " length", strbuffer, Len(strbuffer), 0
  311.         Sec = Round(Val(Mid$(strbuffer, 1, Len(strbuffer))) / 1000)
  312.         'Round(CInt(Mid$(s, 1, Len(s))) / 1000)
  313.         If Sec < 60 Then
  314.             strbuffer = Format$(Sec, "00:00")
  315.         End If
  316.         If Sec > 59 Then
  317.             Mins = Int(Sec / 60)
  318.             Sec = Sec - (Mins * 60)
  319.             strbuffer = Format$(Mins, "00") & ":" & Format$(Sec, "00")
  320.         End If
  321.     Case byFrames
  322.         mciSendString "status " & AliasName & " length", str, Len(str), 0
  323.         strbuffer = str
  324.     End Select
  325.     LENGTHFORMAT = getString(strbuffer)
  326.  
  327. End Function
  328.  
  329. Public Function MoveVideoTo(lngHWnd As Long, _
  330.                             lngLeft As Long, _
  331.                             lngTop As Long, _
  332.                             lngWidth As Long, _
  333.                             lngHeight As Long, _
  334.                             Optional margin As Long) As String
  335.  
  336. Dim ret As String * 128
  337. Dim rec As RECT
  338.  
  339.     If lngWidth = 0 Or lngHeight = 0 Then
  340.         GetWindowRect lngHWnd, rec
  341.         lngWidth = rec.Right - rec.Left
  342.         lngHeight = rec.Bottom - rec.Top
  343.     End If
  344.     nReturn = mciSendString("put " & AliasName & " window at " & lngLeft + margin & " " & lngTop + margin & " " & lngWidth - (margin * 2) & " " & lngHeight - (margin * 2), 0&, 0&, 0&)
  345.     If Not nReturn = 0 Then
  346.         mciGetErrorString nReturn, ret, 128
  347.         MoveVideoTo = ret
  348.     Else
  349.         MoveVideoTo = "Success"
  350.     End If
  351.  
  352. End Function
  353.  
  354. Public Sub OpenCapture(lngHWnd As Long, _
  355.                        where As Long, _
  356.                        ByVal sName As String, _
  357.                        lngLeft As Long, _
  358.                        lngTop As Long, _
  359.                        lngWidth As Long, _
  360.                        lngHeight As Long)
  361.  
  362.  
  363. Dim pos As String * 128
  364.  
  365.     AliasName = "VideoCapture"
  366.     mciSendString "close VideoCapture", 0, 0, 0
  367.     mciSendString "stop VideoCapture", 0, 0, 0
  368.     OpenMediaFile lngHWnd, "VideoCapture", DeviceType
  369.     mciSendString "set VideoCapture time format ms", pos, 128, 0& 'set time format
  370.     mciSendString "set VideoCapture audio all off", 0, 0, 0 'no need sound
  371.     mciSendString "window VideoCapture state hide", 0, 0, 0 'hide first frame
  372.     mciSendString "seek VideoCapture to " & where * 1000, 0, 0, 0
  373.     mciSendString "window VideoCapture state show", 0, 0, 0
  374.     MoveVideoTo lngHWnd, lngLeft, lngTop, lngWidth, lngHeight
  375.  
  376. End Sub
  377.  
  378. Public Function OpenMediaFile(lngHWnd As Long, _
  379.                               ByVal AliasName As String, _
  380.                               ByVal typeDevice As String) As String
  381.  
  382. Dim sCommand   As String * 255
  383. Dim dwReturn   As Long
  384. Const WS_CHILD As Long = &H40000000
  385.  
  386.     sCommand = "open " & Filename & " type " & typeDevice & " Alias " & AliasName & " parent " & lngHWnd & " Style " & WS_CHILD
  387.     dwReturn = mciSendString(sCommand, 0&, 0&, 0&)
  388.     m_LengthVideo = LENGTHFORMAT(ByMS)
  389.     If Not dwReturn = 0 Then
  390.         mciGetErrorString dwReturn, sCommand, 128
  391.         OpenMediaFile = sCommand
  392.     End If
  393.     OpenMediaFile = "Success"
  394.  
  395. End Function
  396.  
  397. Public Sub PlayMEDIAFILE(Optional where As Long)
  398.  
  399.     OpenMediaFile hwndParent, AliasName, DeviceType
  400.     MoveVideoTo hwndParent, 0, 0, 0, 0
  401.     mciSendString "seek " & AliasName & " to " & where * 1000, 0, 0, 0
  402.     mciSendString "play " & AliasName, 0, 0, 0
  403.     'WALLPAPERTHEME (ClearWall)
  404.     'InvalidateRect 0&, ByVal 0, 1& 'refresh desktop
  405.  
  406. End Sub
  407.  
  408. 'Public Sub SetVideoState(vfm_State As Vid_State)
  409. '    Select Case vfm_State
  410. '    Case vd_On
  411. '        mciSendString "set all video on", 0, 0, 0
  412. '    Case vd_Off
  413. '        mciSendString "set all video off", 0, 0, 0
  414. '    End Select
  415. 'End Sub
  416. Public Function POSFORMAT(sPFormat As TimeFormat) As String
  417.  
  418. Dim strbuffer As String
  419. Dim Sec       As Double
  420. Dim Mins      As Integer
  421.  
  422.     On Error Resume Next
  423.     strbuffer = String$(256, vbNullChar)
  424.     Select Case sPFormat
  425.     Case ByMS
  426.         mciSendString "set " & AliasName & " time format tmsf ", 0, 0, 0
  427.         mciSendString "status " & AliasName & " position", strbuffer, Len(strbuffer), 0
  428.         strbuffer = getString(strbuffer)
  429.         Sec = Round(Mid$(strbuffer, 1, Len(strbuffer)) / 1000) 'type mismatch
  430.         strbuffer = Sec
  431.     Case ByTMSF
  432.         mciSendString "set " & AliasName & " time format milliseconds", 0, 0, 0
  433.         mciSendString "status " & AliasName & " position", strbuffer, Len(strbuffer), 0
  434.         Sec = Round(Mid$(strbuffer, 1, Len(strbuffer)) / 1000)
  435.         If Sec < 60 Then
  436.             strbuffer = "00:" & Format$(Sec, "00")
  437.         End If
  438.         If Sec > 59 Then
  439.             Mins = Int(Sec / 60)
  440.             Sec = Sec - (Mins * 60)
  441.             strbuffer = Format$(Mins, "00") & ":" & Format$(Sec, "00")
  442.         End If
  443.     Case byFrames
  444.         mciSendString "status " & AliasName & " position", strbuffer, Len(strbuffer), 0
  445.     End Select
  446.     POSFORMAT = getString(strbuffer)
  447.     On Error GoTo 0
  448.  
  449. End Function
  450.  
  451. Public Function PutVideoCapture(lngHWnd As Long, _
  452.                                 lngLeft As Long, _
  453.                                 lngTop As Long, _
  454.                                 lngWidth As Long, _
  455.                                 lngHeight As Long) As String
  456.  
  457. Dim ret As String * 128
  458. Dim rec As RECT
  459.  
  460.     If lngWidth = 0 Or lngHeight = 0 Then
  461.         GetWindowRect lngHWnd, rec
  462.         lngWidth = rec.Right - rec.Left
  463.         lngHeight = rec.Bottom - rec.Top
  464.     End If
  465.     nReturn = mciSendString("put " & "VideoCapture" & " window at " & lngLeft & " " & lngTop & " " & lngWidth & " " & lngHeight, 0&, 0&, 0&)
  466.     If Not nReturn = 0 Then  'tidak sukses
  467.         mciGetErrorString nReturn, ret, 128 'Pesan Error
  468.         PutVideoCapture = ret
  469.     End If
  470.     PutVideoCapture = "Success"
  471.  
  472. End Function
  473.  
  474. Public Sub setCommand(Cmd As MCI_COMMAND, _
  475.                       Optional sDrive As String, _
  476.                       Optional nValue As Long)
  477.  
  478. Dim pos As String * 128
  479.  
  480.     mciSendString "open " & sDrive & " Type cdaudio alias " & AliasName & " wait shareable", 0, 0, 0
  481.     Select Case Cmd
  482.     Case DoorOpen
  483.         mciSendString "set " & AliasName & " door open", 0, 0, 0
  484.         mciSendString "capability " & AliasName & " can eject notify", 0, 0, 0
  485.     Case DoorClose
  486.         mciSendString "set " & AliasName & " door closed", 0, 0, 0
  487.     Case CloseCD
  488.         mciSendString "close " & AliasName, 0, 0, 0
  489.     Case PlayCD
  490.         mciSendString "play " & AliasName, 0, 0, 0
  491.     Case seekCD
  492.         mciSendString "set " & AliasName & " time format ms", pos, 128, 0&
  493.         mciSendString "seek " & AliasName & " to " & nValue, 0, 0, 0
  494.         mciSendString "play " & AliasName & " from " & nValue, 0, 0, 0
  495.     Case StopCD
  496.         mciSendString "stop " & AliasName, 0, 0, 0
  497.     Case SpeedCD
  498.         mciSendString "set " & AliasName & " speed " & nValue, 0, 0, 0
  499.     Case PauseCD
  500.         mciSendString "pause " & AliasName & " wait", 0, 0, 0
  501.     Case ResumeCD
  502.         mciSendString "resume " & AliasName, 0, 0, 0
  503.     End Select
  504.  
  505. End Sub
  506.  
  507. Public Sub SetTimeFormat(fm_Time As TimeFormat)
  508.  
  509. 'TESTED:OK
  510.  
  511.     Select Case fm_Time
  512.     Case ByMS
  513.         mciSendString "set " & AliasName & " time format ms wait", 0, 0, 0
  514.     Case ByTMSF
  515.         mciSendString "set " & AliasName & " time format tmsf wait", 0, 0, 0
  516.     Case byFrames
  517.         mciSendString "set " & AliasName & " time format frames wait", 0, 0, 0
  518.     End Select
  519.  
  520. End Sub
  521.  
  522. Public Sub SetVolumeState(st_Vol As CHANELVOLUME, _
  523.                           new_Vol As Long)
  524.  
  525.  
  526.     Select Case st_Vol
  527.     Case Chan_All
  528.         mciSendString "setaudio " & AliasName & " volume to " & new_Vol, 0, 0, 0
  529.     Case Chan_Right
  530.         mciSendString "setaudio " & AliasName & " right volume to " & new_Vol, 0, 0, 0
  531.     Case Chan_Left
  532.         mciSendString "setaudio " & AliasName & " left volume to " & new_Vol, 0, 0, 0
  533.     End Select
  534.  
  535. End Sub
  536.  
  537. Public Sub FForward(ByVal nValue As Long)
  538.  
  539.  
  540. Dim pos As String * 128
  541. Dim I   As Long
  542.  
  543.     I = CLng(getStatusInfo(Position)) 'Current position
  544.     mciSendString "set " & AliasName & " time format ms", pos, 128, 0&
  545.     mciSendString "play " & AliasName & " from " & I + nValue * 1000, 0, 0, 0
  546.  
  547. End Sub
  548.  
  549. Public Sub FRewind(ByVal nValue As Long)
  550.  
  551.  
  552. Dim pos As String * 128
  553. Dim I   As Long
  554.  
  555.     I = CLng(getStatusInfo(Position)) 'Current position
  556.     mciSendString "set " & AliasName & " time format ms", pos, 128, 0&
  557.     mciSendString "play " & AliasName & " from " & I - nValue * 1000, 0, 0, 0
  558.  
  559. End Sub
  560.  
  561. Public Function GetHwndDesktop() As Long
  562.  
  563.  
  564. Dim xhwnd As Long
  565.  
  566.     On Error Resume Next
  567.     xhwnd = FindWindow(vbNullString, "Program Manager")
  568.     GetHwndDesktop = xhwnd
  569.     On Error GoTo 0
  570.  
  571. End Function
  572.  
  573. Public Sub SetAudioState(stChan As CHANELVOLUME, _
  574.                          st_pos As Vid_State)
  575.  
  576.  
  577.     Select Case stChan
  578.     Case Chan_All
  579.         If st_pos = vd_On Then
  580.             mciSendString "set " & AliasName & " audio all on", 0, 0, 0
  581.         Else 'NOT ST_POS...
  582.             mciSendString "set " & AliasName & " audio all off", 0, 0, 0
  583.         End If
  584.     Case Chan_Right
  585.         If st_pos = vd_On Then
  586.             mciSendString "set " & AliasName & " audio right on", 0, 0, 0
  587.         Else 'NOT ST_POS...
  588.             mciSendString "set " & AliasName & " audio right off", 0, 0, 0
  589.         End If
  590.     Case Chan_Left
  591.         If st_pos = vd_On Then
  592.             mciSendString "set " & AliasName & " audio left on", 0, 0, 0
  593.         Else 'NOT ST_POS...
  594.             mciSendString "set " & AliasName & " audio left off", 0, 0, 0
  595.         End If
  596.     End Select
  597.  
  598. End Sub
  599.  
  600. 'Public Function THE_ENDOFSONG(fTime As TimeFormat) As Boolean 'TESTED;OK
  601.  
  602. ''TESTED:OK
  603. 'Dim curPos As String
  604. 'Dim EndPos As String
  605. 'Select Case fTime
  606. 'Case ByMS
  607. 'curPos = POSFORMAT(ByMS)As LonNion t
  608.  
  609. End Sub
  610.  
  611. kPublic Sub SetAudioState(stChan As CHANELVOLUME, _odString "seek " & evulevD 0, 0, 0
  612.  
  613. End SR State(steiwwnd As Lot " & Arentic Sub SetTimeFormat(fm_Time As TimeFormat)
  614.  
  615. 'TESTED:i.nS...
  616.             m   m