2010-02-09 125 views
5

我刚刚接到一个非常长的技术支持电话,因为客户的笔记本电脑上没有麦克风。 (愚蠢的我们:他们说他们早些时候使用过麦克风,我从未听说过有麦克风的笔记本电脑而不是)。如何检测麦克风是否存在

我不知道是否有一种方法来检测是否有在Windows XP,Vista中的麦克风(录音功能),7

(处理启用我有错误,它记录错误和然后退出功能,但应用程序只是崩溃在Windows 7上如果没有麦克风)

+0

类似:http://stackoverflow.com/questions/1559542/detecting-if-the-microphone-is-on – 2010-02-09 19:13:21

+0

做您尝试使用***直接X *** ? – Kiquenet 2015-12-22 13:44:19

回答

0

我想你一定能够做到这一点在VB 6的唯一途径是通过直接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 ..

+0

我没有测试过这个,但它看起来像是最好的答案(VB6)。 – 2010-10-12 13:51:41

+0

@ClayNichols你测试过了吗? – Kiquenet 2015-12-22 13:45:18

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 
    } 
+0

原帖标签为VB6 .... – 2010-02-16 15:49:09

1

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

照顾解释? – 2014-09-25 01:03:49