SoundGet

AutoHotKey

SoundGet

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

SoundGet, OutputVar [, ComponentType, ControlType, DeviceNumber]

参数

OutputVar

用来保存获取的设置的变量名, 可以为一个介于 0 和 100 (包含的) 之间的浮点数或单词 ON 或 OFF (仅用于 控制器类型 为 ONOFF, MUTE, MONO, LOUDNESS, STEREOENH 以及 BASSBOOST 的时候). 如果在获取设置时遇到问题, 则此变量会被置空. 浮点数的格式 (例如它的小数位数) 由 SetFormat 决定.

ComponentType

如果省略或为空, 则它默认为单词 MASTER. 否则, 它可以为下列单词的其中一个: MASTER (与 SPEAKERS 含义相同), DIGITAL, LINE, MICROPHONE, SYNTH, CD, TELEPHONE, PCSPEAKER, WAVE, AUX, ANALOG, HEADPHONES 或 N/A. 如果音频设备缺少指定的 组件类型, 则 ErrorLevel 会表明此问题.

在某些混音器中标为 Auxiliary 的组件可能需要作为 ANALOG 而不是 AUX 进行访问.

如果一个设备含有同种 组件类型 的多个实例 (例如两个 LINE 类型), 那么通常首个包含播放设置, 第二个包含录制设置. 要访问首个实例外的其他实例, 请在此参数后加上冒号和数字. 例如:Analog:2 表示 analog 组件的第二个实例.

ControlType

如果省略或为空, 则它默认为 VOLUME. 否则, 它可以为下列单词的其中一个: VOLUME (或 VOL), ONOFF, MUTE, MONO, LOUDNESS, STEREOENH, BASSBOOST, PAN, QSOUNDPAN, BASS, TREBLE, EQUALIZER 或表示有效的控制器类型数字 (请参阅 声卡分析脚本). 如果指定的 组件类型 没有指定的 控制器类型, 则 ErrorLevel 会表明此问题.

注:音频设备通常仅支持 VOLUME(或VOL)和 MUTE,不过根据 Windows 和音频设备的不同还可能支持其他.

DeviceNumber

介于 1 和支持设备总数之间的数字.如果省略此参数,则它默认为 1(首个音频设备),在 Windows Vista 及更高版本中则为系统默认的录制和播放设备.此参数可以为 表达式. 声卡分析脚本有助于确定要使用的编号.

ErrorLevel

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

命令执行成功时 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

备注

在 v1.1.10 中添加了对 Windows Vista 及更高版本的支持.

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

与音频设备相关的更多功能和细微控制,考虑使用 VA 库.

使用 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.