脚本需要播放提示音、语音片段或背景音乐时,最简单的办法通常是 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"

站内延伸

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。