システム内のデフォルトの録音デバイスの存在を検出するにはどうすればよいですか?
質問
システムにデフォルトの録音デバイスがインストールされているかどうかを検出するにはどうすればよいですか?これは Win32 API への呼び出しを通じて実行できると思いますが、これに関する経験のある人はいますか?
ここで話しているのは、コントロール パネルを開いてサウンド オプションを確認するのではなく、コードを通じてこれを行うことです。
解決
の使用 DirectX SDK, これにより、システム上の DirectSoundCapture デバイスごとに DSEnumCallback 関数が呼び出されます。DSEnumCallback に渡される最初のパラメータは LPGUID で、これは「列挙されるデバイスを識別する GUID のアドレス、またはプライマリ デバイスの場合は NULL」です。
録音デバイスが存在するかどうかを確認するだけであれば (デフォルトのデバイスを本当に知りたい場合は、これだけでは不十分だと思います)、 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;
}
他のヒント
というオープンソースのオーディオ API があります。 ポートオーディオ それはあなたが使用できる方法を持っています。Pa_GetDeviceInfo() とか呼ばれるメソッドだと思います。
win32 API には、と呼ばれる関数があります。 waveInGetNumDevs それのための。
所属していません StackOverflow