我使用如下代码可以连续播放wav文件,可是我不知道如何停止。Option Compare Database
Private Declare Function sndPlaySound& Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long)
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10'===========================
'sndPlaySound函数需要两个参数:第一个参数soundfilename是要播放的WAV文件的名称;第二个参数是一个表明播放方式的标识常量,其定义的值如前面的声明所示,通常所使用的标识意义如下:'SND_SYNC播放WAV格式文件,播放完毕后将控制转移回应用中。'SND_ASYNC播放WAV格式文件,将控制立即转移回应用程序中,而不管对WAV文件的播放是否结束。'SND_MEMORY用于播放以前已经加载到内存中的WAV格式文件' SND_LOOP循环播放WAV格式文件' 注意:SND_LOOP标识通常需要同SND_ASYNC共同使用,也即在两个标识之间添加“与”播放符,以免在对WAV格式文件进行播放的时候将系统挂起。'play *.wav 声音子程序 用法--PlayWav App.Path & "\sounds\recycle.wav"
'==============================
Public Sub PlayWav(SoundName As String)
    Dim tmpSoundName As String
    Dim wFlags As Long
    Dim X As Long
       tmpSoundName = SoundName
      ' wFlags = SND_ASYNC Or SND_NODEFAULT '正常播放 wav 文件
       wFlags = SND_ASYNC Or SND_LOOP '循环播放 wav 文件
       X = sndPlaySound(tmpSoundName, wFlags)
End SubPrivate Sub command1_Click()
PlayWav app.Path & "\mysound.wav"
End Sub

解决方案 »

  1.   

    刚好今天看到一个Res = mciSendString("close all", Ret, 1024, 0)
      

  2.   

    使用 另外一个 api 问题得到解决。代码如下:
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
    (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Const SND_LOOP = &H8
    Const SND_ASYNC = &H1
    Private Sub play_wav_Click()sndPlaySound app.Path & "\dingdong.wav", SND_ASYNC Or SND_LOOP '循环播放
    End SubPrivate Sub stop_wav_Click()
    sndPlaySound vbNullString, SND_ASYNC '停止播放
    End Sub