Как обнаружить, если Микрофон присутствует

У меня просто был очень длинный вызов технической поддержки, потому что у клиента не было Микрометра на их ноутбуке. (Глупый я: они сказали, что использовали микрометр ранее, и я никогда не слышал о ноутбуке, не имеющем Микрометр).

Я задаюсь вопросом, существует ли способ обнаружить, существует ли Микрофон (возможность записи) на Windows XP, Vista, 7.

(Мне включили обработку ошибок, и она регистрирует ошибку и затем выходит из Функции, но приложение просто отказывает в Windows 7, если нет никакого Микрофона.)

5
задан Clay Nichols 9 February 2010 в 19:28
поделиться

3 ответа

Я думаю, что единственный способ сделать это в 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 ..

{ {1}}
0
ответ дан 15 December 2019 в 06:25
поделиться

Я бы использовал 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
    }
1
ответ дан 15 December 2019 в 06:25
поделиться

Определенно используйте вариант 5 - он безопасен и позволяет компилятору оптимизировать (не принимать адрес этой переменной:Кроме того, если он находится в заголовке - поместите его в пространство имен, чтобы избежать загрязнения глобальной области:

// header.hpp
namespace constants
{
    const int GLOBAL_CONST_VAR = 0xFF;
    // ... other related constants

} // namespace constants

// source.cpp - use it
#include <header.hpp>
int value = constants::GLOBAL_CONST_VAR;
-121--848925-

Кроме того, «два» - это конст-чар *, а не ид. всевозможные забавные последствия могут возникнуть при обращении с ним как с ид. замените на @ «два».

Также, если (eachArg) является посторонним.

-121--4817582-

Ознакомьтесь с Переключателем аудиоустройств на панели задач

В этом исходном коде VB приведен пример перечисления аудиоустройств ввода-вывода.

1
ответ дан 15 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: