用WindowsMediaPlayer控件 Dim MFile As String CommonDialog1.ShowOpen MFile = CommonDialog1.FileName MediaPlayer1.FileName = MFile MediaPlayer1.AutoStart = True MediaPlayer1.AutoSize = True
microsoft multimedia control6.0 ' 初始化,设定MMC控件的必要属性 Private Sub Form_Load() MMControl1 .Notify = False '决定下一条 MCI 命令是否使用 MCI 通知服务 .Wait = True '决定 Multimedia MCI 控件是否要等到下一条 MCI 命令完成,才能将控件返回应用程序 .Shareable = False '决定多个程序能否共享同一台 MCI 设备 End With End Sub' 打开音频文件 Private Sub open_Click(Index As Integer) Dim typ As String CommonDialog1.Filter = "Mid文件(*.mid)|*.mid|Wav文件(*.wav)|*.wav" CommonDialog1.ShowOpen If CommonDialog1.FileName <> "" Then MMControl1.FileName = CommonDialog1.FileName typ = Right(CommonDialog1.FileName, 3) ' 根据打开不同的文件,设定不同的设备 Select Case LCase(typ) Case "mid" MMControl1.DeviceType = "Sequencer" Case "wav" MMControl1.DeviceType = "Waveaudio" End Select ' 打开设备 MMControl1.Command = "Open" MMControl1.UpdateInterval = 500 ' 规定两次连续的 StatusUpdate 事件之间间隔500毫秒 End If End Sub
使用api ' To Play a Wave File'BY S.Raghunathan 'DeclarationsPrivate Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _(ByVal lpszSoundName As String, ByVal uFlags As Long) As LongDim fileName as String 'CodingsSub PlayWave()fileName = "C:\Windows\Media\MicrosoftSound.Wav" sndPlaySound fileName,0 End Sub()
我觉得还是用API比较好。 如果控件多了,加载速度慢,EXE文件大等缺点。
楼上的说得是,如果控件多了,加载速度慢,EXE文件大。Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As LongSub PlayMyWav(PathWavName As String) sndPlaySound PathWavName, &H1 End Sub
mciexecute这个api就可以
不过要注意文件名里不能有空格
所以你还要用getshortname这个api来设置文件名
Dim MFile As String
CommonDialog1.ShowOpen
MFile = CommonDialog1.FileName
MediaPlayer1.FileName = MFile
MediaPlayer1.AutoStart = True
MediaPlayer1.AutoSize = True
' 初始化,设定MMC控件的必要属性
Private Sub Form_Load()
MMControl1
.Notify = False '决定下一条 MCI 命令是否使用 MCI 通知服务
.Wait = True '决定 Multimedia MCI 控件是否要等到下一条 MCI 命令完成,才能将控件返回应用程序
.Shareable = False '决定多个程序能否共享同一台 MCI 设备
End With
End Sub' 打开音频文件
Private Sub open_Click(Index As Integer)
Dim typ As String
CommonDialog1.Filter = "Mid文件(*.mid)|*.mid|Wav文件(*.wav)|*.wav"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
MMControl1.FileName = CommonDialog1.FileName
typ = Right(CommonDialog1.FileName, 3)
' 根据打开不同的文件,设定不同的设备
Select Case LCase(typ)
Case "mid"
MMControl1.DeviceType = "Sequencer"
Case "wav"
MMControl1.DeviceType = "Waveaudio"
End Select
' 打开设备
MMControl1.Command = "Open"
MMControl1.UpdateInterval = 500 ' 规定两次连续的 StatusUpdate 事件之间间隔500毫秒
End If
End Sub
' To Play a Wave File'BY S.Raghunathan
'DeclarationsPrivate Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _(ByVal lpszSoundName As String, ByVal uFlags As Long) As LongDim fileName as String
'CodingsSub PlayWave()fileName = "C:\Windows\Media\MicrosoftSound.Wav"
sndPlaySound fileName,0
End Sub()
如果控件多了,加载速度慢,EXE文件大等缺点。
sndPlaySound PathWavName, &H1
End Sub