サウンドデバイスまたはコンポーネントのネイティブCOMインタフェースを取得します。
InterfacePtr := SoundGetInterface(IID, Component, Device)
型:文字列
インターフェース識別子(GUID)。「{xxxxxxx-xxxx-xxxx-xxxx-xxxx}」の形式をとる。
If blank or omitted, an interface implemented by the device itself will be retrieved. そうでないときは、1や"Line in"のようにコンポーネントの表示名とインデックスのいずれかを指定するか、"Line in:2"のようにその両方を指定します。
詳しくは「Component(Sound関数)」をご覧ください。
空白または省略したときは、初期値はシステムのデフォルトの再生デバイス(必ずしもデバイス1である必要はありません)になります。そうでないときは、1や"Speakers"や"Speakers (Example HD Audio)"のようにコンポーネントの表示名とインデックスのいずれかを指定するか、"Speakers:2"のようにその両方を指定します。
詳しくはDevice(Sound関数)をご覧ください。
Type: Integer
成功した場合の戻り値はインターフェース・ポインターである。
インターフェイスがサポートされていない場合、戻り値は0である。
デバイスまたはコンポーネントが見つからないときは、TargetErrorがスローされます。そうでないときは、失敗したときにOSErrorがスローされます。
インターフェイスは以下のいずれかのソースから取得される:
"{7FB7B48F-531D-44A2-BCB3-5AD5A134B3DC}"とすると、IAudioVolumeLevelインターフェイスを取得することができる。インターフェイスポインターを取得したら、ComCallを使ってそのメソッドを呼び出すことができる。正しいメソッド・インデックスを特定するために、Windows SDKヘッダーファイルを参照すること。
インターフェース・ポインターは、不要になったらObjReleaseに渡して解放しなければならない。これは、ComValueで「ラップ」することで可能になる。ラップされた値(オブジェクト)は、直接ComCallに渡すことができる。
Interface := ComValue(13, InterfacePtr)
Peak meter. ピーク値がゼロ(サウンドが再生されていない)の場合を除き、ツールチップに現在のピーク値が表示される。
; IAudioMeterInformation
audioMeter := SoundGetInterface("{C02216F6-8C67-4B5B-9D00-D008E73E0064}")
if audioMeter
{
try loop ; Until the script exits or an error occurs.
{
; audioMeter->GetPeakValue(&peak)
ComCall 3, audioMeter, "float*", &peak:=0
ToolTip peak > 0 ? peak : ""
Sleep 15
}
ObjRelease audioMeter
}
else
MsgBox "Unable to get audio meter"