# aardio 范例: 播放声音

```aardio
//播放声音
import fsys.dlg;
import win.ui;
/*DSG{{*/
var winform = win.form(text="播放声音";right=506;bottom=186;border="dialog frame";max=false;min=false)
winform.add(
btnActiveMovie={cls="button";text="ActiveMovie 播放声音";left=273;top=74;right=482;bottom=106;z=5};
btnMessageBeep={cls="button";text="系统警报声";left=29;top=132;right=171;bottom=164;z=2};
btnMp3={cls="button";text="播放 MP3";left=29;top=19;right=171;bottom=51;z=4};
btnWav={cls="button";text="播放 WAV 文件";left=188;top=19;right=330;bottom=51;z=3};
btnWmpOcx={cls="button";text="WMPlayer.OCX 播放网络 MP3";left=29;top=74;right=260;bottom=106;z=1}
)
/*}}*/

import fsys.media;
winform.btnWav.oncommand = function(id,event){
    
    var path = fsys.dlg.open("*.wav|*.wav||");
    if(!path) return;
    
	import fsys.media;
	fsys.media.playSound(path);
}

import fsys.media;
winform.btnMp3.oncommand = function(id,event){
    
    var path = fsys.dlg.open("*.mp3|*.mp3||");
    if(!path) return;
    	
    if(mediaFile) {
    	mediaFile.stop();
    }
	
	mediaFile = fsys.media(path);
	if(mediaFile) {
		mediaFile.play();
	}
}

winform.btnWmpOcx.oncommand = function(id,event){
	
	import com.wmPlayer;// 只能用于界面线程
	com.wmPlayer.url = "http://download.aardio.com/v10.files/demo/mp3/lrc.mp3"
	
	/*
	com.wmPlayer 是用 com.CreateObject("WMPlayer.OCX") 创建的 COM 对象。
	
	关于 WMPlayer.OCX ：
	https://learn.microsoft.com/zh-cn/previous-versions/windows/desktop/wmp/object-model-reference-for-scripting
	*/
}

winform.btnActiveMovie.oncommand = function(id,event){
	
    var path = fsys.dlg.open("*.mp3|*.mp3||");
    if(!path) return;
    
    //参考接口定义："\lib\vc6\.vc\Include\IAMOVIE.IDL"
	var axMovie = com.CreateObject("AMOVIE.ActiveMovieControl") 
    axMovie.FileName = path; 
}

winform.btnMessageBeep.oncommand = function(id,event){
	
	//播放系统警报声
	//声音排队后，MessageBeep 函数将控制权返回给调用函数，并异步播放声音。
	//Win7 以及之后系统使用默认声音设备（通常是声卡）
	::User32.MessageBeep(0x10/*_MB_ICONHAND*/);
	
	//峰鸣声，Win7 以及之后系统使用默认声音设备（通常是声卡），早期系统使用主板峰鸣器。
	//::Kernel32.Beep(550,500);//过时函数，音效质量差，不建议使用
}

winform.show() 
win.loopMessage();
```