SoundGetInterface

Ruft ein natives COM-Interface eines Audiogeräts oder einer Komponente ab.

InterfacePtr := SoundGetInterface(IID, Komponente, Gerät)

Parameter

IID

Typ: Zeichenkette

Ein Interface-Identifikator (GUID) im Format "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}".

Komponente

Typ: Zeichenkette oder Integer

Wenn leer oder weggelassen, wird ein Interface abgerufen, das vom Gerät selbst implementiert wurde. Andernfalls geben Sie den Anzeigenamen und/oder die Indexnummer der Komponente an, z.B. 1, "Line in" oder "Line in:2".

Weitere Informationen finden Sie unter Komponente (Sound-Funktionen).

Gerät

Typ: Zeichenkette oder Integer

Wenn leer oder weggelassen, wird standardmäßig das Standardwiedergabegerät des Systems verwendet (was nicht unbedingt Gerät 1 ist). Andernfalls geben Sie den Anzeigenamen und/oder die Indexnummer des Geräts an, z.B. 1, "Lautsprecher", "Lautsprecher:2" oder "Lautsprecher (Beispiel HD Audio)".

Weitere Informationen finden Sie unter Gerät (Sound-Funktionen).

Rückgabewert

Typ: Integer

Bei Erfolg wird ein Interface-Pointer zurückgegeben.

Wenn das Interface nicht unterstützt wird, wird 0 zurückgegeben.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Gerät oder die Komponente nicht gefunden werden konnte. Andernfalls wird bei Misserfolg ein OSError ausgelöst.

Bemerkungen

Das Interface wird von einer der folgenden Quellen abgerufen:

Sobald der Interface-Pointer abgerufen wurde, kann ComCall verwendet werden, um seine Methoden aufzurufen. Die korrekte Indexnummer einer Methode finden Sie in den Windows SDK-Header-Dateien.

Der Interface-Pointer muss durch Übergabe an ObjRelease freigegeben werden, wenn er nicht mehr benötigt wird. Um das zu bewerkstelligen, "wrappen" Sie den Pointer mit ComValue. Der gewrappte Wert (ein Objekt) kann direkt an ComCall übergeben werden.

Interface := ComValue(13, InterfacePtr)

Sound-Funktionen, DeviceTopology API

Beispiele

Pegelmesser. Dieses Beispiel zeigt einen Tooltip mit dem aktuellen Lautstärkepegel an, außer wenn der Pegelwert Null ist (also wenn kein Sound wiedergegeben wird).

; IAudioMeterInformation
audioMeter := SoundGetInterface("{C02216F6-8C67-4B5B-9D00-D008E73E0064}")
if audioMeter
{
    try loop  ; Bis das Skript beendet wird oder ein Fehler auftritt.
    {
        ; audioMeter->GetPeakValue(&peak)
        ComCall 3, audioMeter, "float*", &peak:=0
        ToolTip peak > 0 ? peak : ""
        Sleep 15
    }
    ObjRelease audioMeter
}
else
    MsgBox "Pegelmesser kann nicht abgerufen werden"