检索声音设备或组件的原生 COM 接口.
InterfacePtr := SoundGetInterface(IID, Component, Device)
类型: 字符串
格式为 "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" 的接口标识符(GUID).
组件的显示名称和/或索引. 例如, 1, "Line in" 或 "Line in:2".
如果省略或留空, 则检索由设备本身实现的接口.
有关详情, 请参阅 Component (Sound 函数).
设备的显示名称和/或索引. 例如, 1, "Speakers", "Speakers:2" 或 "Speakers (Example HD Audio)".
如果省略该参数, 则它默认为系统的默认回放设备(不一定是设备 1).
有关详情, 请参阅 Device (Sound 函数).
如果成功, 返回值是接口指针.
如果失败, 返回值是空字符串.
失败时可能会抛出以下异常之一:
| Error 类 | 消息 |
|---|---|
| TargetError | Device not found(无法找到设备) |
| Component not found(无法找到组件) | |
| Component doesn't support this control type(组件不支持此控件类型) | |
| OSError | System-generated.(由系统生成) |
接口是从以下来源之一检索的:
"{7FB7B48F-531D-44A2-BCB3-5AD5A134B3DC}" 检索 IAudioVolumeLevel 接口, 该接口提供对每个通道音量级别控件的访问.一旦检索到接口指针, 可用 ComCall 来调用它的方法. 参考 Windows SDK 头文件来识别正确的方法索引.
接口指针必须在不再需要时通过传递给 ObjRelease 来释放. 这可以通过使用 ComValue "包装" 它来实现. 包装的值(对象) 可以直接传递给 ComCall.
Interface := ComValue(13, InterfacePtr)
峰值表. 将显示带有当前峰值的工具提示, 但峰值为零时除外(无声音播放).
; IAudioMeterInformation
audioMeter := SoundGetInterface("{C02216F6-8C67-4B5B-9D00-D008E73E0064}")
if audioMeter
{
try loop ; 直到脚本退出或发生错误.
{
; audioMeter->GetPeakValue(&peak)
ComCall 3, audioMeter, "float*", &peak:=0
ToolTip peak > 0 ? peak : ""
Sleep 15
}
ObjRelease audioMeter
}
else
MsgBox "Unable to get audio meter"