システムにデフォルトの録音デバイスがインストールされているかどうかを検出するにはどうすればよいですか? これはWin32 APIのいくつかの呼び出しによって行うことができると思いますが、誰もこれに関する経験はありますか?システム内のデフォルト録音デバイスの存在を検出するにはどうすればよいですか?
私はコードでこれをやっているのですが、コントロールパネルを開いてサウンドオプションを調べることではありません。
システムにデフォルトの録音デバイスがインストールされているかどうかを検出するにはどうすればよいですか? これはWin32 APIのいくつかの呼び出しによって行うことができると思いますが、誰もこれに関する経験はありますか?システム内のデフォルト録音デバイスの存在を検出するにはどうすればよいですか?
私はコードでこれをやっているのですが、コントロールパネルを開いてサウンドオプションを調べることではありません。
DirectX SDKを使用すると、システム上の各DirectSoundCaptureデバイスに対してDSEnumCallback関数を呼び出すDirectSoundCaptureEnumerateを呼び出すことができます。 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;
}
PortAudioというオープンソースのオーディオAPIがあり、使用できる方法があります。私はメソッドがPa_GetDeviceInfo()または何かと呼ばれると思います。
win32 APIにはwaveInGetNumDevsという機能があります。