CodeItBetter Programming Another VB Programming Blog

How to Play MPEG-files in VB 6.

Posted on January 4, 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
'MultiMedia - How to Play MPEG-files in VB 6.
Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" _
    (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" _
    (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
    (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _
    ByVal hwndCallback As Long) As Long
 
'Default Property Values:
Const m_def_FileName = ""
 
'Property Variables:
Dim m_FileName As String
 
'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=UserControl,UserControl,-1,Enabled
Public Property Get Enabled() As Boolean
    Enabled = UserControl.Enabled
End Property
 
Public Property Let Enabled(ByVal New_Enabled As Boolean)
    UserControl.Enabled() = New_Enabled
    PropertyChanged "Enabled"
End Property
 
'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MemberInfo=13,0,0,
Public Property Get FileName() As String
    FileName = m_FileName
End Property
 
Public Property Let FileName(ByVal New_FileName As String)
    m_FileName = New_FileName
    PropertyChanged "FileName"
End Property
 
'Initialize Properties for User Control
Private Sub UserControl_InitProperties()
    m_FileName = m_def_FileName
End Sub
 
'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    UserControl.Enabled = PropBag.ReadProperty("Enabled", True)
    m_FileName = PropBag.ReadProperty("FileName", m_def_FileName)
End Sub
 
Private Sub UserControl_Terminate()
    mmStop
End Sub
 
'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("Enabled", UserControl.Enabled, True)
    Call PropBag.WriteProperty("FileName", m_FileName, m_def_FileName)
End Sub
 
Public Function IsPlaying() As Boolean
    Static s As String * 30
    mciSendString "status MPEGPlay mode", s, Len(s), 0
    IsPlaying = (Mid$(s, 1, 7) = "playing")
End Function
 
Public Function mmPlay()
    Dim cmdToDo As String * 255
    Dim dwReturn As Long
    Dim ret As String * 128
 
    Dim tmp As String * 255
    Dim lenShort As Long
    Dim ShortPathAndFie As String
 
    If Dir(FileName) = "" Then
        mmOpen = "Error with input file"
        Exit Function
    End If
    lenShort = GetShortPathName(FileName, tmp, 255)
    ShortPathAndFie = Left$(tmp, lenShort)
    glo_hWnd = hwnd
    cmdToDo = "open " & ShortPathAndFie & " type MPEGVideo Alias MPEGPlay Parent " & _
        UserControl.hwnd & " Style 1073741824"
    dwReturn = mciSendString(cmdToDo, 0&, 0&, 0&)
 
    If dwReturn <> 0 Then  'not success
        mciGetErrorString dwReturn, ret, 128
        mmOpen = ret
        MsgBox ret, vbCritical
        Exit Function
    End If
 
    mmPlay = "Success"
    mciSendString "play MPEGPlay", 0, 0, 0
End Function
 
Public Function mmPause()
    mciSendString "pause MPEGPlay", 0, 0, 0
End Function
 
Public Function mmStop() As String
    mciSendString "stop MPEGPlay", 0, 0, 0
    mciSendString "close MPEGPlay", 0, 0, 0
End Function
 
Public Function PositionInSec()
    Static s As String * 30
    mciSendString "set MPEGPlay time format milliseconds", 0, 0, 0
    mciSendString "status MPEGPlay position", s, Len(s), 0
    PositionInSec = Round(Mid$(s, 1, Len(s)) / 1000)
End Function
 
Public Function Position()
    Static s As String * 30
    mciSendString "set MPEGPlay time format milliseconds", 0, 0, 0
    mciSendString "status MPEGPlay position", s, Len(s), 0
    sec = Round(Mid$(s, 1, Len(s)) / 1000)
    If sec < 60 Then Position = "0:" & Format(sec, "00")
    If sec > 59 Then
        mins = Int(sec / 60)
        sec = sec - (mins * 60)
        Position = Format(mins, "00") & ":" & Format(sec, "00")
    End If
End Function
 
Public Function LengthInSec()
    Static s As String * 30
    mciSendString "set MPEGPlay time format milliseconds", 0, 0, 0
    mciSendString "status MPEGPlay length", s, Len(s), 0
    LengthInSec = Round(Val(Mid$(s, 1, Len(s))) / 1000)
End Function
 
Public Function Length()
    Static s As String * 30
    mciSendString "set MPEGPlay time format milliseconds", 0, 0, 0
    mciSendString "status MPEGPlay length", s, Len(s), 0
    sec = Round(Val(Mid$(s, 1, Len(s))) / 1000)
    If sec < 60 Then Length = "0:" & Format(sec, "00")
    If sec > 59 Then
        mins = Int(sec / 60)
        sec = sec - (mins * 60)
        Length = Format(mins, "00") & ":" & Format(sec, "00")
    End If
End Function
 
Public Function About()
    frmCtlAbout.Show vbModal, Me
End Function
 
Public Function SeekTo(Second)
    mciSendString "set MPEGPlay time format milliseconds", 0, 0, 0
    If IsPlaying = True Then mciSendString "play MPEGPlay from " & Second, 0, 0, 0
    If IsPlaying = False Then mciSendString "seek MPEGPlay to " & Second, 0, 0, 0
End Function
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.