PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 806|回复: 0

用API函数Mcisendstring直接播放背景音乐

[复制链接]
发表于 2007-9-26 00:00:00 | 显示全部楼层

用API函数Mcisendstring直接播放背景音乐

1.用API函数Mcisendstring直接播放背景音乐
Private Sub Command1_Click()
Dim back
back = mciSendString&("CLOSE NN", 0, 0, 0)
End Sub

Private Sub Command2_Click()
Dim back
back = mciSendString&("OPEN " + App.Path + "\TEST.mid" + " TYPE SEQUENCER ALIAS NN", 0&, 0, 0)
back = mciSendString&("PLAY NN FROM 0", 0&, 0, 0)
R% = mciSendString&("CLOSE ANIMATION", 0&, 0, 0)
End Sub

Private Sub Form_Load()
Dim back
back = mciSendString&("OPEN " + App.Path + "\TEST.mid" + " TYPE WaveAudio ALIAS NN", 0&, 0, 0)
back = mciSendString&("PLAY NN FROM 0", 0&, 0, 0)
R% = mciSendString&("CLOSE ANIMATION", 0&, 0, 0)
End Sub

2.使用mcisendstring重复播放音乐文件
思路:在TIMER控件中检测当前文件的播放状态,如果为stopped,那么就重复播放


Option Explicit

Private 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
Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 100
Call mciSendString("close all", 0, 0, 0) '首先关闭所有的MCI设备,避免播放多个音乐文件时声音会重叠
Call mciSendString("open " + "c:\winnt\media\ringin.wav", 0, 0, 0) '打开MCI设备
Call mciSendString("play " + "c:\winnt\media\ringin.wav", 0, 0, 0) '播放MCI设备
End Sub
Private Sub Timer1_Timer()

Dim buffer As String * 128
Dim pos As Integer
   mciSendString "status c:\winnt\media\ringin.wav mode", buffer, 128, 0&

    pos = InStr(buffer, Chr(0))
   If Left(buffer, pos - 1) = "stopped" Then
     Call mciSendString("close all", 0, 0, 0)
Call mciSendString("open " + "c:\winnt\media\ringin.wav", 0, 0, 0)
Call mciSendString("play " + "c:\winnt\media\ringin.wav", 0, 0, 0)
End If
End Sub

 

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-9-17 03:59 , Processed in 0.047358 second(s), 23 queries .

快速回复 返回顶部 返回列表