5

顧客がラップトップにマイクを持っていなかったため、私は非常に長いテクニカルサポートコールを受けました。(愚かな私:彼らは以前にマイクを使用したと言っていましたが、ラップトップにマイクがないことは聞いたことがありません)。

Windows XP、Vista、7にマイク(録音機能)があるかどうかを検出する方法があるかどうか疑問に思っています。

(エラー処理を有効にして、エラーをログに記録してから関数を終了しますが、マイクがない場合、アプリはWindows 7でクラッシュします。)

4

4 に答える 4

1

C++で

#include "stdafx.h"
#include "Mmdeviceapi.h"
#include <atlbase.h>


int _tmain(int argc, _TCHAR* argv[])
{
    CoInitializeEx(NULL, COINIT_MULTITHREADED);

    CComPtr<IMMDeviceEnumerator> pEnumerator = NULL;
    CComPtr<IMMDevice> pDevice;
    const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
    const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
    HRESULT hr = CoCreateInstance(
        CLSID_MMDeviceEnumerator, NULL,
        CLSCTX_ALL, IID_IMMDeviceEnumerator,
        (void**)&pEnumerator);

    if (FAILED(hr))
    {
        printf("failed");
    }
    else
    {
        hr = pEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &pDevice);

        if (!pDevice || hr == ERROR_NOT_FOUND)
        {
            printf("no microphone");
        }
        else
        {
            printf("microphone present");
        }

    }

    return 0;
}
于 2014-09-25T01:00:05.530 に答える
1

システム トレイ オーディオ デバイス スイッチャーを確認する

このVB ソース コードでは、オーディオ I/O デバイスを列挙する方法の例を示します。

于 2010-02-15T21:00:39.310 に答える
1

IMMDeviceEnumerator::GetDefaultAudioEndpointを使用します。これは、指定された役割とデータ フローのデフォルトのオーディオ デバイスを返します。

特に、次を使用します。

    CComPtr<IMMDeviceEnumerator> pEnumerator;
    CComPtr<IMMDevice> pDevice;

    hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
           CLSCTX_ALL, IID_PPV_ARGS(&pEnumerator));
    if (SUCCEEDED(hr))
    {
        hr = pEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &pDevice);
    }
    if (!pDevice || hr == ERROR_NOT_FOUND)
    {
           // no microphone
    }
于 2010-02-15T19:55:36.273 に答える
0

VB 6 でこれを行う唯一の方法は、Direct X を使用することだと思います。

http://msdn.microsoft.com/en-us/library/bb318770(VS.85).aspx

これを確認できます:

http://msdn.microsoft.com/en-us/library/bb280815(VS.85).aspx

CaptureDevices コレクション クラス (Microsoft.DirectX.DirectSound)

http://msdn.microsoft.com/en-us/library/ms810619.aspx

dxdiag.. を呼び出すこともできます。

于 2010-02-09T19:41:58.647 に答える