# SoundPlay

播放音频, 视频或其他支持的文件类型.

    SoundPlay, Filename , Wait

## 参数

Filename

  要播放的文件名, 如果未指定绝对路径, 则假定在 %A_WorkingDir% 中.

  要发出标准的系统声音, 请像下面显示的那样指定星号后跟着数字. 注: 在此模式中 Wait 参数没有效果:

  - *-1 = 简单的哔哔声. 如果声卡不可用, 则使用扬声器生成这个声音.
  - *16 = 手型(停止/错误声)
  - *32 = 问号声
  - *48 = 感叹声
  - *64 = 星号(消息声)

  已知限制: 由于 Windows 系统的 Bug, 路径超过 127 个字符的 WAV 文件将不会被播放. 要解决这个问题, 可以使用其他文件类型如 MP3(路径长度最多 255 个字符) 或使用 8.3 短路径(请参阅 A_LoopFileShortPath 如何检索这些路径).

Wait

  如果省略, 则在播放文件时脚本的当前线程会移动到下一个命令. 要避免这种情况, 请指定 1 或单词 WAIT, 这会使得当前线程会等到文件播放结束后才继续执行. 即使在等待时, 可以通过热键, 自定义菜单项或计时器启动新的线程.

  已知限制: 如果省略 WAIT 参数, 则操作系统可能认为播放的文件 "在使用中", 直到脚本关闭或播放另一个文件(甚至是不存在的文件).

## 错误处理

[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.

如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.

## 备注

所有 Windows 操作系统应该都能够播放 .wav 文件. 不过, 如果操作系统中没有安装正确的解码器或功能, 那么其他文件(.mp3, .avi, 等等) 可能无法播放.

如果在播放一个文件时当前脚本播放了第二个文件, 那么第一个文件会被停止后才可以播放第二个. 在一些系统中, 即使在完全独立的脚本中播放新文件时, 某些文件类型也可能停止播放.

要停止当前正在播放的文件, 请对不存在的文件使用 SoundPlay, 例如: `SoundPlay, Nonexistent.avi`.

如果脚本退出了, 那么任何由它启动的当前正在播放的文件将会停止.

## 相关

SoundBeep, SoundGet, SoundSet, SoundGetWaveVolume, SoundSetWaveVolume, MsgBox, 线程

## 示例

播放位于 Windows 目录下的声音文件.

    SoundPlay, %A_WinDir%\Media\ding.wav

产生一个简单的哔哔声. 如果没有声卡, 则使用扬声器产生声音.

    SoundPlay *-1

dftg