Come rilevare la presenza di un dispositivo di registrazione predefinito nel sistema?

StackOverflow https://stackoverflow.com/questions/41330

  •  09-06-2019
  •  | 
  •  

Domanda

Come posso rilevare se nel sistema è installato un dispositivo di registrazione predefinito?Scommetto che questo può essere fatto tramite alcune chiamate all'API Win32, qualcuno ha esperienza in merito?

Sto parlando di farlo tramite codice, non aprendo il pannello di controllo e dando un'occhiata alle opzioni audio.

È stato utile?

Soluzione

Usando il SDK DirectX, puoi chiamare DirectSoundCaptureEnumerate, che chiamerà la funzione DSEnumCallback per ogni dispositivo DirectSoundCapture sul sistema.Il primo parametro passato al DSEnumCallback è un LPGUID, ovvero l'"Indirizzo del GUID che identifica il dispositivo da enumerare o NULL per il dispositivo primario".

Se tutto ciò che devi fare è scoprire se è presente un dispositivo di registrazione (non penso che sia abbastanza buono se hai davvero bisogno di conoscere il dispositivo predefinito), puoi utilizzare waveInGetNumDevs:

#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;
}

Altri suggerimenti

Esiste un'API audio open source chiamata PortaAudio che ha un metodo che potresti usare.Penso che il metodo si chiami Pa_GetDeviceInfo() o qualcosa del genere.

L'API win32 ha una funzione chiamata waveInGetNumDevs per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top