2

システムにデフォルトの録音デバイスがインストールされているかどうかを検出するにはどうすればよいですか? これは、Win32 API へのいくつかの呼び出しによって実行できると思いますが、これに関する経験がある人はいますか?

コントロール パネルを開いてサウンド オプションを確認するのではなく、コードを使用してこれを行うことについて話しているのです。

4

3 に答える 3

1

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;
}
于 2008-09-03T09:55:52.790 に答える
0

win32 API には、 waveInGetNumDevsという関数があります。

于 2008-09-06T18:19:16.267 に答える
0

使用できるメソッドを持つPortAudioと呼ばれるオープン ソース オーディオ API があります。メソッドは Pa_GetDeviceInfo() か何かと呼ばれていると思います。

于 2008-09-03T09:11:55.483 に答える