用Ruby播放音乐

阅读更多
《The Ruby Way》第14章,记述了一段代码可以调用Windows API播放音乐。
require 'win32ole'

sound = WIN32OLE.new('MCI.MMcontrol')
wav = "D:\\Musics\\Japanese\\a002.mp3"
sound.fileName = wav
sound.autoEnable = true

sound.command = 'Open'
sound.command = 'Play'

sleep 7

但是,播放后休眠7秒就会退出程序,而不能等待音乐播放结束。这是作者给读者留的作业。
查了一下MMControl控件,得知有一个mode属性,可以用来判断sound的播放状态。
引用
Mode属性
524:设备未打开
525:停止
526:播放
527:记录
528:查找
529:暂停
530:待命

修改后的程序
require 'win32ole'

sound = WIN32OLE.new('MCI.MMcontrol')
wav = "D:\\Musics\\Japanese\\a002.mp3"
sound.fileName = wav
sound.autoEnable = true

sound.command = 'Open'
sound.command = 'Play'

while sound.mode == 526
  sleep 1
end

你可能感兴趣的:(音乐,Ruby,Windows)