如何使用PlaySound()在VB6中播放声音

如何使用PlaySound()在VB6中播放声音,vb6,playsound,Vb6,Playsound,如何使用PlaySound()播放.wav文件?我有播放声音(声音),但我不断得到错误“参数不是可选的” 还有,如何停止播放声音?您的问题中没有向我们显示任何代码,因此我只能猜测可能的错误 首先,需要在VB 6代码中正确声明PlaySound函数: Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _ (ByVal lpszName As String,

如何使用PlaySound()播放.wav文件?我有播放声音(声音),但我不断得到错误“参数不是可选的”


还有,如何停止播放声音?

您的问题中没有向我们显示任何代码,因此我只能猜测可能的错误

首先,需要在VB 6代码中正确声明
PlaySound
函数:

Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _
    (ByVal lpszName As String,                                       _
     ByVal hModule As Long,                                          _
     ByVal dwFlags As Long) As Long
您还需要一些常量,可以使用API查看器应用程序轻松找到这些常量。以下是我从网上下载的一个列表,因为我没有安装VB 6:

Private Const SND_APPLICATION As Long = &H80
Private Const SND_ALIAS As Long       = &H10000
Private Const SND_ALIAS_ID As Long    = &H110000
Private Const SND_ASYNC As Long       = &H1
Private Const SND_FILENAME As Long    = &H20000
Private Const SND_LOOP As Long        = &H8
Private Const SND_MEMORY As Long      = &H4
Private Const SND_NODEFAULT As Long   = &H2
Private Const SND_NOSTOP As Long      = &H10
Private Const SND_NOWAIT As Long      = &H2000
Private Const SND_PURGE As Long       = &H40
Private Const SND_RESOURCE As Long    = &H40004
Private Const SND_SYNC As Long        = &H0
你需要咨询来了解这些神奇数字的含义或作用。在这里,您还应该阅读函数参数的含义。从您得到的错误来看,听起来您试图错误地调用函数。特别是,您省略了三个参数中的一个,它们都是必需的(即,未标记为
可选的

我不知道你想播放什么样的声音,或者声音文件在哪里,所以我不能给出一个完美地反映你情况的例子。但是,要从磁盘上的文件播放声音,您需要将声音文件的完整路径作为第一个参数传递,第二个参数为0(因为您没有从资源加载声音),第三个参数为
SND_FILENAME

PlaySound "X:\Sounds\trumpet.wav", 0, SND_FILENAME
您还可以添加
SND_ASYNC
标志以异步播放声音。这意味着该函数将立即返回,并允许在执行其余代码时在后台播放声音。这不是默认行为,而是通过
SND\u SYNC
标志显式实现的

您可以添加
SND_LOOP
标志,使声音重复播放,直到停止为止。当然,这也需要
SND_ASYNC
标志

综上所述,我们得到了持续循环和异步播放的声音:

PlaySound "X:\Sounds\trumpet.wav", 0, SND_FILENAME Or SND_ASYNC Or SND_LOOP
要停止播放声音,请为第一个参数传递空字符串(因为不需要指定要播放的声音),为第二个参数传递0,为第三个参数传递0(因为不需要任何特殊行为):


当然,只有在您最初开始播放声音时通过了
SND_ASYNC
标志,这才有效。否则,直到声音播放完毕,控件才会返回到代码中,这样就不会有任何停止

请把你的密码寄出去。但是,
参数不是可选的
总是它所说的。
PlaySound vbNullString, 0, 0