# SoundGet

从音频设备中获取多种设置 (主静音, 主音量, 等等)

SoundGet, OutputVar [, ComponentType, ControlType, DeviceNumber]

#### 参数

OutputVar | 用来保存获取的设置的变量名称, 可以是一个在 0 到 100 (包含的)之间的浮点数或者单词 ON 或 OFF (仅在 ControlTypes/控制类型 为 ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, 或 BASSBOOST 时使用). 如果在获取设置时遇到问题, 变量将被置空. 浮点数的格式, 比如它的小数位数, 由 SetFormat 命令决定.
ComponentType | 如果省略或为空, 默认值为单词 MASTER. 否则, 它可以是下列单词的其中一个: MASTER (与 SPEAKERS 含义相同), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES, 或 N/A. 如果音频设备缺少指定的 ComponentType/组件类型, ErrorLevel 将表明有问题. 在某些混音器中标为 Auxiliary 的组件可能需要作为 ANALOG 而不是 AUX 进行访问. 如果一个设备含有同种 组件类型 的多个实例(例如两种类型的 LINE), 通常首个包含播放设置, 第二个包含录制设置. 要访问首个实例外的其他实例, 在该参数后附加一个冒号和数字. 例如: Analog:2 表示 analog 组件的第二个实例.
ControlType | 如果省略或为空, 默认值为 VOLUME. 否则, 它可以是下列单词的其中一个: VOLUME (或 VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER, 或者是有效的控制器类型的数字 (请看 声卡分析脚本). 如果指定的 组件类型 缺少指定的 控制类型, ErrorLevel 将表明有问题.
DeviceNumber | 如果省略此参数, 默认值为 1 (第一个音频设备), 通常是系统默认的录制和播放设备.可以通过指定一个大于 1 的数字来操作其他的音频设备. 此参数可以是一个 表达式.

#### ErrorLevel

如果命令成功执行 ErrorLevel 被设置为 0.否则它被设置为下列短语的其中一个:

Invalid Control Type or Component Type
Can't Open Specified Mixer
Mixer Doesn't Support This Component Type
Mixer Doesn't Have That Many of That Component Type
Component Doesn't Support This Control Type
Can't Get Current Setting

#### 备注

在 Windows Vista 或更高版本的系统上, SoundGet 命令获取脚本自己的设置, 而不是活动窗口的. 此问题可能会在未来的版本中解决. 要绕弯解决此问题, 在 "AutoHotkey.exe" (或 已编译脚本)文件的属性对话框中, 改变兼容性设置为 "Windows XP".

为了发现安装在系统上的音频设备 (混音器) 的功能 -- 例如可用的组件类型和控制类型 -- 请运行 声卡分析脚本.

使用 SoundSet 命令可以改变设置.

#### 相关

SoundSet, SoundGetWaveVolume, SoundSetWaveVolume, SoundPlay

#### 示例

    SoundGet, master_volume
    MsgBox, Master volume is %master_volume% percent.

    SoundGet, master_mute, , mute
    MsgBox, Master Mute is currently %master_mute%.

    SoundGet, bass_level, Master, bass
    if ErrorLevel
        MsgBox, Error Description: %ErrorLevel%
    else
        MsgBox, The BASS level for MASTER is %bass_level% percent.

    SoundGet, microphone_mute, Microphone, mute
    if microphone_mute = Off
        MsgBox, The microphone is not muted.