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_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
在按扭的事件中加入以下代码:
在按扭的事件中加入以下代码:
播放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); //重复播放