以下是王国荣、郑郁霖先生的文章,Copy下来当作自己的备忘录,本人对midi全然不知,
网友有问题时,请向他们询问。

利用多媒体的 mciSendString API 函数, 再搭配 mci(multimedia control interface) 指令, 即
可播放 .wav 声音档, 细节如下:

     1. API 的宣告:

	 Declare Function mciSendString Lib "Winmm.dll" Alias "mciSendStringA"_
		      (ByVal Command As String,_
		       ByVal ReturnString As String,_
		       ByVal ReturnLength As Long,_
		       ByVal Callback As Long) As Long

      Command : MCI 的命令字串

       open = 开启设备:设备名 [type 设备型式][alias 别名]
       close = 关闭设备:设备名
       play = 播放档案:设备名 [from 起点][to 终点]
       pause = 暂停档案
       resume = 取消暂停档案
       seek = 直接移到:设备名 [to 位置 | to start | to end]
       stop = 停止拨放:设备名




     2. 程式范例:

	 开启档案
	      Call mciSendString("open c:\wavs\3ucheng.mid waveaudio alias song",0,0,0)
	 播放音乐
	      Call mciSendString("play song",0,0,0)

	  ' 撰写播放声音的一副程式
	  Sub PlaySound(filename)
	      Dim cmd As String
	      Call mciSendString("close MyWav", 0, 0, 0) ' MyWav 这个名称可依需要来修改
	      cmd = "open " & filename & " type WAVEAudio alias MyWav"
	      '去掉 上面中的 type WAVEAudio, 则该副程式便可用来播放 midi 音乐档。
	      Call mciSendString(cmd, 0, 0, 0)
	      Call mciSendString("play MyWav", 0, 0, 0)
	  End Sub

	  ' 假设要拨放 "c:\windows\Tada.wav"
	   PlaySound "c:\windows\Tada.wav"

播放 .flc 动画档案的方法与 .wav 及 .midi 并没有什麽不同,最後完成的程式大致如下:

	  Sub PlaySound(filename)
	      Dim cmd As String
	      Call mciSendString("close MyFlc", 0, 0, 0) ' MyFlc 这个名称可依需要来修改
	      cmd = "open " & filename & " alias MyFlc"
	      Call mciSendString(cmd, 0, 0, 0)
	      Call mciSendString("play MyFlc", 0, 0, 0)
	  End Sub

注:有些机器可能会因为没有安装 .flc 的驱动程式而无法播放,欲检查机器中是否安装有
	  播放 .flc  的驱动程式, 可先利用 Windows 提供的媒体播放程式播放 .flc 档案看看。

假设我们想将 .flc 放在 Picture1 之中播放, 则必须将 open MCI 指令由原先的:

 "open " & filename & " alias MyFlc"    改成:
 "open " & filename & " alias MyFlc parent " & Picture1.hWnd & " style " & WS_CHILD

则 .flc 就会在 Picture1 之中播放。

注:WS_CHILD 等於 &H40000000。




















 撰写者:   郑郁霖三优工作室
	   BBS:漣三优资讯站漲 (04)246-3795 专业程式设计资源站

     Declare Function sndPlaySound Lib "Winmm.dll" Alias "sndPlaySoundA" _
		     (ByVal SoundName As String, ByVal Flags As Long) As Long

     稍做说明:

      SoundName : 要播放的档名啦!

      Flags : 播放方式。

	      为数值方式:

	      0 = 播放完才往下 RUN
	      1 = 边放边 RUN 程式
	      2 = 若档案不存在,将不发出警告讯息
	      4 = 先将档存於变数内,可避免延迟
	      8 = 重覆播放 (须配合 1 !)

	      可合并使用,如 Flags = 1 + 8

     呼叫范例:
		 Call sndPlaySound("c:\wavs\3ucheng.wav", 1 + 8)

     再来还有一个很重要的,就是关闭语音档!

		 Call sndPlaySound(vbNullString,0)