PB里面播放音乐(wav文件)

PB里面播放音乐(wav文件)


//定义函数
FUNCTION ulong waveOutGetNumDevs() LIBRARY "winmm.dll"
FUNCTION ulong sndPlaySound(ref string lpszSoundName,ulong uFlags) LIBRARY "winmm.dll" ALIAS FOR "sndPlaySoundA" 
 
//播放wav文件 
ulong ll_numdevs,ll_mode
string ls_wavfile

ll_mode = 3
ls_wavfile = '播放的文件'

ll_numdevs = waveOutGetNumDevs()
if ll_numdevs > 0 then
      sndPlaySound(ls_wavfile,ll_mode)
end if

***************************************************************************************************

附 uFlags 在VB下的说明:

  Public Const SND_SYNC = &&H0
  Public Const SND_ASYNC = &&H1
  Public Const SND_NODEFAULT = &&H2
  Public Const SND_MEMORY = &&H4
  Public Const SND_ALIAS = &&H10000
  Public Const SND_FILENAME = &&H20000
  Public Const SND_RESOURCE = &&H40004
  Public Const SND_ALIAS_ID = &&H110000
  Public Const SND_ALIAS_START = 0
  Public Const SND_LOOP = &&H8
  Public Const SND_NOSTOP = &&H10
  Public Const SND_VALID = &&H1F
  Public Const SND_NOWAIT = &&H2000
  Public Const SND_VALIDFLAGS = &&H17201F
  Public Const SND_RESERVED = &&HFF000000
  Public Const SND_TYPE_MASK = &&H170007

  Public Const SND_SYNC = &&H0
  Public Const SND_ASYNC = &&H1
  Public Const SND_NODEFAULT = &&H2
  Public Const SND_MEMORY = &&H4
  Public Const SND_ALIAS = &&H10000
  Public Const SND_FILENAME = &&H20000
  Public Const SND_RESOURCE = &&H40004
  Public Const SND_ALIAS_ID = &&H110000
  Public Const SND_ALIAS_START = 0
  Public Const SND_LOOP = &&H8
  Public Const SND_NOSTOP = &&H10
  Public Const SND_VALID = &&H1F
  Public Const SND_NOWAIT = &&H2000
  Public Const SND_VALIDFLAGS = &&H17201F
  Public Const SND_RESERVED = &&HFF000000
  Public Const SND_TYPE_MASK = &&H170007

  Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

  sndPlaySound函数需要两个参数:第一个参数soundfilename是要播放的WAV文件的名称;第二个参数是一个表明播放方式的标识常量,其定义的值如前面的声明所示,通常所使用的标识意义如下:
  SND_SYNC播放WAV格式文件,播放完毕后将控制转移回应用中。
  SND_ASYNC播放WAV格式文件,将控制立即转移回应用程序中,而不管对WAV文件的播放是否结束。
  SND_MEMORY用于播放以前已经加载到内存中的WAV格式文件。
  SND_LOOP循环播放WAV格式文件。

  注意:SND_LOOP标识通常需要同SND_ASYNC共同使用,也即在两个标识之间添加“与”播放符,以免在对WAV格式文件进行播放的时候将系统挂起。

***********************************************************************************************************

下面是关于 MCISENDSTRING 的,未整理。

Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
在按扭的事件中加入以下代码:

Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
在按扭的事件中加入以下代码:


播放MP3:
MCISENDSTRING “PLAY 文件名(含路径)”,0,0,0
停止:
MCISENDSTRING “STOP 文件名(含路径)”,0,0,0
关闭:
MCISENDSTRING “CLOSE 文件名(含路径)”,0,0,0


如果你有兴趣还可以用这个函数的其他参数来获取歌曲的总时间,当前时间,当前状态,这个函数很好用,就这一个函数就可以做成一个类似WINAMP的MP3播放器了,当然了,那些视觉效果不包含在内

mciSendString是一个多媒体API,可以进行很多的操作,比如播放wav,avi,mid等等
mcisendstring('set cdaudio door open',nil,0,handle);的意思是:
set  <--指令
cdaudio   <--设备标志
door      <--根据设备不同而不同
open      <--同上
mcisendstring('set cdaudio door closed',nil,0,handle);
同上
其实要查询cd-rom的状态,也可以用mcisendstring来完成。

一、打开CD-ROM
mciSendString("Set cdAudio door open wait",NULL,0,NULL);
二、关闭CD_ROM
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
=mciSendString("set cdaudio door close","",0,0)
播放:
=mciSendString("play cdaudio","",0,0)
停止:
=mciSendString("stop cdaudio","",0,0)

char buf[50];
mciSendString("open dillo.avi type avivideo alias dillo",buf,strlen(buf),NULL);
mciSendString("play dillo repeat",buf,strlen(buf),NULL); //重复播放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值