📄 mmedia.vb
字号:
Option Strict Off
Option Explicit On
Friend Class Mmedia
'---------类模块---------------------------------------
' Name : MMedia.cls
' Notes : A multimedia class, which when turned
' : into an object lets you load and play
' : multimedia files, such as sound and
' : video.
'--------------------------------------------------------
Private sAlias As String '为多媒体资源指定一个别名
Private sFilename As String '内部变量,存放文件名
Private nLength As Single '内部变量,存放文件的长度
Private nPosition As Single '内部变量,存放当前的播放位置
Private sStatus As String '内部变量,存放当前的状态
Private bWait As Boolean ' 指示播放的方式:同步或者异步
'声明mciSendString函数
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA"(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
Public Sub mmOpen(ByVal sTheFile As String)
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
'声明一个字符创变量以保存 文件名称
Dim sType As String
' 打开指定的多媒体文件,并关闭其它可能打开的文件
If sAlias <> "" Then
mmClose()
End If
' 由文件的扩展名来判定文件类型
Select Case UCase(Right(sTheFile, 3))
Case "WAV"
sType = "Waveaudio"
Case "AVI"
sType = "AviVideo"
Case "MID"
sType = "Sequencer"
Case Else
' 如果文件扩展名未知则退出过程
Exit Sub
End Select
sAlias = Right(sTheFile, 3) & Minute(Now)
' At this point there is no file open, and we have determined the
' file type. Now would be a good time to open the new file.
'现在,没有文件打开,同时也确定了文件的类型,所以可以打开
'指定的多媒体文件了。
If InStr(sTheFile, " ") Then sTheFile = Chr(34) & sTheFile & Chr(34)
nReturn = mciSendString("Open " & sTheFile & " ALIAS " & sAlias & " TYPE " & sType & " wait", "", 0, 0)
End Sub
Public Sub mmClose()
' 关闭当前打开的文件
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
' 如果当前没有文件打开则退出该过程
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Close " & sAlias, "", 0, 0)
sAlias = ""
sFilename = ""
End Sub
Public Sub mmPause()
' 暂停多媒体文件的回放
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
'如果当前没有文件打开则退出该过程
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Pause " & sAlias, "", 0, 0)
End Sub
Public Sub mmPlay()
' 从当前的位置开始播放当前打开的文件
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
'如果当前没有文件打开则退出该过程
If sAlias = "" Then Exit Sub
' 开始播放
If bWait Then
nReturn = mciSendString("Play " & sAlias & " wait", "", 0, 0)
Else
nReturn = mciSendString("Play " & sAlias, "", 0, 0)
End If
End Sub
Public Sub mmStop()
' 完全停止播放一个打开的文件
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
'如果当前没有文件打开则退出该过程
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Stop " & sAlias, "", 0, 0)
End Sub
Public Sub mmSeek(ByVal nPosition As Single)
'在打开的文件内寻找指定的位置
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
nReturn = mciSendString("Seek " & sAlias & " to " & nPosition, "", 0, 0)
End Sub
Property FileName() As String
Get
'返回Filename属性的值
FileName = sFilename
End Get
Set
' 设置Filename属性的值,同时也将用mmOpen过程打开Filename属性
' 所指定的多媒体文件
mmOpen(Value)
End Set
End Property
Property Wait() As Boolean
Get
' 返回对象的Wait属性的值
Wait = bWait
End Get
Set
'设置对象的Wait属性的值
bWait = Value
End Set
End Property
ReadOnly Property Length() As Single
Get
' 返回当前打开的多媒体文件的文件长度
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn As Integer
Dim nLength As Short
'声明一个字符串变量以保存mci "Status"过程的返回值
Dim sLength As VB6.FixedLengthString = New VB6.FixedLengthString(255)
' 如果没有打开任何文件则返回0
If sAlias = "" Then
Length = 0
Exit Property
End If
nReturn = mciSendString("Status " & sAlias & " length", sLength.Value, 255, 0)
nLength = InStr(sLength.Value, Chr(0))
Length = Val(Left(sLength.Value, nLength - 1))
End Get
End Property
Property Position() As Single
Get
' 返回文件的当前播放位置
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn, nLength As Short
'声明一个变量以保存mci "Status position"命令返回的位置值
Dim sPosition As VB6.FixedLengthString = New VB6.FixedLengthString(255)
' 如果没有打开任何文件则退出该过程
If sAlias = "" Then Exit Property
' 得到位置并返回
nReturn = mciSendString("Status " & sAlias & " position", sPosition.Value, 255, 0)
nLength = InStr(sPosition.Value, Chr(0))
Position = Val(Left(sPosition.Value, nLength - 1))
End Get
Set
' 搜索并设置Position 属性的值
mmSeek(Value)
End Set
End Property
ReadOnly Property Status() As String
Get
' 返回当前文件的回放/录音状态
'声明一个变量以保存mciSendString函数的返回值
Dim nReturn, nLength As Short
'声明一个变量以保存mciSendString函数返回的字符串
Dim sStatus As VB6.FixedLengthString = New VB6.FixedLengthString(255)
'如果没有打开任何文件则退出该过程
If sAlias = "" Then Exit Property
nReturn = mciSendString("Status " & sAlias & " mode", sStatus.Value, 255, 0)
nLength = InStr(sStatus.Value, Chr(0))
Status = Left(sStatus.Value, nLength - 1)
End Get
End Property
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -