Frage

Wie erkenne ich, ob im System ein Standardaufzeichnungsgerät installiert ist?Ich wette, dass dies durch einige Aufrufe der Win32-API erreicht werden kann. Hat jemand Erfahrung damit?

Ich spreche davon, dies durch Code zu erreichen, und nicht dadurch, dass man die Systemsteuerung öffnet und einen Blick auf die Soundoptionen wirft.

War es hilfreich?

Lösung

Verwendung der DirectX-SDK, können Sie DirectSoundCaptureEnumerate aufrufen, das Ihre DSEnumCallback-Funktion für jedes DirectSoundCapture-Gerät im System aufruft.Der erste an Ihren DSEnumCallback übergebene Parameter ist eine LPGUID, also die „Adresse der GUID, die das aufzuzählende Gerät identifiziert, oder NULL für das primäre Gerät“.

Wenn Sie nur herausfinden müssen, ob ein Aufnahmegerät vorhanden ist (ich glaube nicht, dass das ausreicht, wenn Sie wirklich das Standardgerät kennen müssen), können Sie waveInGetNumDevs verwenden:

#include <tchar.h>
#include <windows.h>
#include "mmsystem.h"

int _tmain( int argc, wchar_t *argv[] )
{
    UINT deviceCount = waveInGetNumDevs();

    if ( deviceCount > 0 )
    {
        for ( int i = 0; i < deviceCount; i++ )
        {
            WAVEINCAPSW waveInCaps;

            waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) );

            // do some stuff with waveInCaps...
        }
    }

    return 0;
}

Andere Tipps

Es gibt eine Open-Source-Audio-API namens PortAudio Das hat eine Methode, die Sie verwenden könnten.Ich glaube, die Methode heißt Pa_GetDeviceInfo() oder so.

Die Win32-API hat eine Funktion namens waveInGetNumDevs dafür.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top