关于API函数PlaySound的用法!

mafangsan 2000-05-30 10:18:00
VB中调用API函数
playsound函数用于播放资源中的一个声音资源时的用法,我知道第三个参数要指明是资源,第二个参数是Application的实例句柄,假如我的一个声音资源的ID为102,那么第一个参数具体应该为什么?大侠们来拿100分,
...全文
915 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowCan 2000-05-31
  • 打赏
  • 举报
回复
1、用VB6的资源编辑器,添加自定义资源。
2、添加所需的WAV文件。
3、修改所加资源的属性,将类型改为"WAVE",注意要带双引号,并且必须是"WAVE",否则没有声音,不知为什么。
4、将标识号改为一个字符串,例如"WAV1",注意也要带双引号。
5、这个字符串就是参数
mafangsan 2000-05-31
  • 打赏
  • 举报
回复
请问NowCan资源名是否就是制作资源文件时所载入的文件的文件名?如果本来该文件名为
“ding.wav",是否将”ding.wav“作为你的playressound过程的实参?看来分数似乎是你的了!
NowCan 2000-05-31
  • 打赏
  • 举报
回复
为什么一定要用ID呢?用资源名不就行了吗?看看下面的程序:

Attribute VB_Name = "ResSound"
Option Explicit

Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Public Const SND_ASYNC& = &H1

Public Const SND_NODEFAULT& = &H2

Public Const SND_RESOURCE& = &H40004


Public Sub PlayResSound(strSound As String)
Dim lFlags As Long
Dim lRet As Long
Dim hInst As Long
lFlags = SND_RESOURCE + SND_ASYNC + SND_NODEFAULT
hInst = App.hInstance
lRet = PlaySound(strSound, hInst, lFlags)
End Sub


把这段程序存为一个VB模块,然后在工程中包含他就可以了。
mafangsan 2000-05-31
  • 打赏
  • 举报
回复
Chen_Lin和project21的方法都是用于放声音文件,而非资源中的声音资源,谢谢你们!
kxy和halfdream请讲清楚一点,或者举一个例子,成功了我给150分!
project21 2000-05-31
  • 打赏
  • 举报
回复
如果你真是想播放声音的话,我觉得应该用mciSendString
Sound=你的声音文件名
如Sound="d:\myvoice\test.mp3(wav)" 注意目录名和文件名中不能有空格
mciSendString "open " & Sound, vbNullString, 0, 0
mciSendString "play " & Sound, vbNullString, 0, 0
下面这段是等待,如果声音播放完,就关闭文件
Dim S as String
Do
If Stopped Then Exit Do
S = String(256, Chr(0))
mciSendString "status " & Sound & " mode", S, Len(S), 0
Loop Until Left(S, 7) = "stopped"
mciSendString "close " & Sound, vbNullString, 0, 0
mafangsan 2000-05-31
  • 打赏
  • 举报
回复
NowCan谢谢你!我的问题已解决,我给你90分!另外两个朋友各5分,如何?以后多交流,我记得你了,NowCan!bye-bye!
Chen_Lin 2000-05-30
  • 打赏
  • 举报
回复
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
------------------ 程序中----------------
PlaySound "F:\test.wav", 0, 0
----------------------------------------
不是可以吗?
kxy 2000-05-30
  • 打赏
  • 举报
回复
你先用LoadResource把声音资源load进来,返回值作为第一个参数看看.
我没有试过,你试试.
NowCan 2000-05-30
  • 打赏
  • 举报
回复
是资源的名称,String 型,用ID不知道怎么办.
halfdream 2000-05-30
  • 打赏
  • 举报
回复
我在BCB和delphi用过这函数的, 它用起来还是相当方便.
它的C声明:
BOOL PlaySound(LPCSTR pszSound,HMODULE hmod, DWORD fdwSound);
其中后两个参数如果不清楚的话,可以为0;
前一个参数是WAV资源名, 或者是WAV 文件名.
如果是资源名,则可以是包含在EXE,DLL文件中的WAV资源.

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧