脚本需要播放提示音、语音片段或背景音乐时,最简单的办法通常是 SoundPlay。但如果还要暂停、继续、切换音频、调整音量、改变播放速度或循环播放,WMPlayer.OCX 会更顺手。
WMPlayer.OCX 是 Windows Media Player 提供的 COM 控件。给它设置音频路径以后,音乐可以继续播放,脚本也能同时执行后面的逻辑。这个特点很适合桌面提醒、定时任务、GUI 小工具、状态播报和简单播放器。
它适合解决什么问题
- 脚本运行过程中播放提示音,但不想让后续代码一直等待。
- 需要暂停、继续、切换音频或设置单曲循环。
- 需要用同一个对象连续播放多段音频。
- 想在 GUI 工具里补一个轻量播放器或语音素材预览功能。
使用时注意
- 示例里的音频路径要改成自己电脑上的实际文件。
WMP.url设置以后通常会异步播放;如果某一步必须等音乐结束,可以读取PlayState再决定是否继续。- 不同格式能否播放,取决于系统播放器和本机解码支持。常用的 wav、mp3 一般更省心。
- 这套写法适合简单播放控制。如果要做完整播放器,还要继续补进度条、异常处理和资源释放。
下载和代码示例
播放Wav音频和片段定位WMPlayer.OCX.zip
蓝奏云:https://wwp.lanzouj.com/i9mr51vmah5c 提取码:ahk6
百度网盘:https://pan.baidu.com/s/1LauOKb_1KtvoQlSJNijgCw?pwd=ahk6 提取码:ahk6
123网盘:https://www.123pan.com/s/ufi3Td-08O53.html 提取码:ahk6
WMPlayer.OCX异步播放示例.ahk
; 兼容性比Winmm\mciSendString要强,这两个API可以混用,异步播放不冲突
#NoEnv
SetBatchLines -1
SetWorkingDir %A_ScriptDir%
WMP := ComObjCreate("WMPlayer.OCX")
; WMP.Settings.Volume := 100
; WMP.Settings.Rate := 1.5
; WMP.Settings.Rate := (0.5 + 0) ; 不支持浮点数的转换方式
WMP.url := "D:\MP3\国语精选\1111.mp3"
While WMP.PlayState != 1 ; 同步阻塞检测音乐何时停止
Sleep 10
WMP.url := "D:\MP3\国语精选\22222.mp3"
MsgBox 因为是异步播放,所以会弹窗并播放着
Return
; 播放和暂停
F1::
if (onoff := !onoff) {
WMP.controls.pause
} else {
WMP.controls.play
}
Return
; 切换音乐
F3::
if (onoff2 := !onoff2) {
WMP.url := "D:\MP3\国语精选\22222.mp3"
} else {
WMP.url := "D:\MP3\国语精选\1111.mp3"
}
Return
; 单曲循环例子
#Persistent
WMP := ComObjCreate("WMPlayer.OCX")
WMP.Settings.SetMode("loop", True)
WMP.url := "D:\MP3\音效素材\人声素材\提醒铃.wav"
站内延伸
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)