2010-02-09 10 views
5

J'ai juste eu un très long appel de support technique parce qu'un client n'avait pas de micro sur son ordinateur portable. (Stupide moi: ils ont dit qu'ils avaient utilisé le micro plus tôt et je n'ai jamais entendu parler d'un ordinateur portable pas ayant un micro).Comment détecter si un microphone est présent

Je me demande s'il y a un moyen de détecter s'il y a un microphone (de capacité d'enregistrement) sur Windows XP, Vista, 7.

(je l'ai eu la gestion des erreurs est activée et il enregistre l'erreur et puis quitte la fonction, mais l'application se bloque uniquement sur Windows 7 s'il n'y a pas de micro)

+0

similaires: http://stackoverflow.com/questions/1559542/detecting-if-the-microphone-is-on –

+0

avez-vous essayé d'utiliser *** Direct X *** ? – Kiquenet

Répondre

0

Je pense que la seule façon que vous serez en mesure de le faire en VB 6 est par direct X:.

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

Vous pouvez vérifier ceci:

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

CaptureDevices Collection classe (Microsoft.DirectX.DirectSound)

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

vous pouvez également appeler dxdiag ..

+0

Je ne l'ai pas testé mais cela ressemble à la meilleure réponse (pour VB6). –

+0

@ClayNichols as-tu testé? – Kiquenet

1

J'utilise IMMDeviceEnumerator::GetDefaultAudioEndpoint - ce rendement le périphérique audio par défaut pour le rôle et le flux de données spécifiés.

vous en particulier, utilisez:

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

Message original étiqueté VB6 .... –

1

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

soin d'expliquer? –