# 34.4. `winsound` — 针对windows的声音播放接口

`winsound` 模块可以访问windows平台提供的基本声音播放接口.它包含以下几个函数与常量.

`winsound.``Beep`(frequency, duration)

  让电脑发出"哔"的声音.frequency 参数指定声音的频率（以赫兹为单位），并且范围必须在37到32,767之间.duration 参数指定声音持续的毫秒数.若系统不能发声r,则抛出 `RuntimeError` 异常.

`winsound.``PlaySound`(sound, flags)

  从Platform API调用底层的`PlaySound()`函数。声音参数可以是文件名，音频数据作为字符串，或`None`。其解释取决于标志的值，它可以是下面描述的常量的按位或的组合。如果声音参数为`None`，任何当前播放的波形声音都会停止。如果系统指示错误，则会引发`RuntimeError`。

`winsound.``MessageBeep`(type=MB_OK)

  从Platform API调用底层的`MessageBeep()`函数。这播放在注册表中指定的声音。类型参数指定要播放的声音；可能的值为`-1`，`MB_ICONASTERISK`，`MB_ICONEXCLAMATION`，`MB_ICONHAND`，`MB_ICONQUESTION` `MB_OK`，以下所有。值`-1`产生“简单哔声”；这是最后的回退，如果声音不能播放否则。

`winsound.``SND_FILENAME`

  sound参数是WAV文件的名称。不要与`SND_ALIAS`一起使用。

`winsound.``SND_ALIAS`

  声音参数是来自注册表的声音关联名称。如果注册表不包含此类名称，请播放系统默认声音，除非还指定`SND_NODEFAULT`。如果没有注册默认声音，引发`RuntimeError`。不要与`SND_FILENAME`配合使用。

  所有Win32系统至少支持以下；大多数系统支持更多：

  `PlaySound()` 名称 | 对应的控制面板声音名称
  --- | ---
  `'SystemAsterisk'` | 星号
  `'SystemExclamation'` | 感叹
  `'SystemExit'` | 退出Windows
  `'SystemHand'` | 严重停止
  `'SystemQuestion'` | 题

  例如：

      import winsound
      # Play Windows exit sound.
      winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

      # Probably play Windows default sound, if any is registered (because
      # "*" probably isn't the registered name of any sound).
      winsound.PlaySound("*", winsound.SND_ALIAS)

`winsound.``SND_LOOP`

  反复播放声音。还必须使用`SND_ASYNC`标志来避免阻塞。不能与`SND_MEMORY`配合使用。

`winsound.``SND_MEMORY`

  `PlaySound()`的声音参数是WAV文件的存储器映像，作为字符串。

  注意

  此模块不支持异步播放内存映像，因此此标志和`SND_ASYNC`的组合将引发`RuntimeError`。

`winsound.``SND_PURGE`

  停止播放指定声音的所有实例。

  注意

  在现代Windows平台上不支持此标志。

`winsound.``SND_ASYNC`

  立即返回，允许声音异步播放。

`winsound.``SND_NODEFAULT`

  如果无法找到指定的声音，请不要播放系统默认声音。

`winsound.``SND_NOSTOP`

  不要打断当前正在播放的声音。

`winsound.``SND_NOWAIT`

  如果声音驱动器忙，立即返回。

  注意

  在现代Windows平台上不支持此标志。

`winsound.``MB_ICONASTERISK`

  播放`SystemDefault`声音。

`winsound.``MB_ICONEXCLAMATION`

  播放`SystemExclamation`声音。

`winsound.``MB_ICONHAND`

  播放`SystemHand`声音。

`winsound.``MB_ICONQUESTION`

  播放`SystemQuestion`声音。

`winsound.``MB_OK`

  播放`SystemDefault`声音。