Как получить список устройств видеозахвата (веб-камер) на windowsх? (C ++)

Итак, у нас есть простое консольное приложение C ++ win32. Все, что мы хотим, это распечатать список веб-камер и других устройств захвата видео, которые доступны. Мы хотим использовать windows apis как можно больше – никаких внешних libs – в конце концов – все, что мы хотим, это распечатать aa list – не летать на луну!) Как это сделать?

Мой собственный ресурс: я нашел этот официальный образец msdn, но я до сих пор не понимаю, как выводить список устройств на экран = ((извините – я новичок в C ++)

… еще несколько ресерхов …

В одном из простейших ms образцов по теме найдено это

HRESULT OnInitDialog(HWND hwnd, ChooseDeviceParam *pParam) { HRESULT hr = S_OK; HWND hList = GetDlgItem(hwnd, IDC_DEVICE_LIST); // Display a list of the devices. for (DWORD i = 0; i count; i++) { WCHAR *szFriendlyName = NULL; hr = pParam->ppDevices[i]->GetAllocatedString( MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME, &szFriendlyName, NULL ); if (FAILED(hr)) { break; } int index = ListBox_AddString(hList, szFriendlyName); ListBox_SetItemData(hList, index, i); CoTaskMemFree(szFriendlyName); } 

похоже, что он должен выполнять эту работу, но я не понимаю, как включить это в простое приложение командной строки, чтобы выводить данные …


также из этой серии:

  • Как получить список устройств захвата видео в Linux? и специальные сведения о получении камер NAMES с правильными, проверенными ответами
  • Как получить список устройств захвата видео в Mac OS? с правильными, еще не проверенными моими ответами
  • Как получить список устройств видеозахвата на windowsх? с правильными, проверенными ответами
  • Как получить список устройств захвата видео NAMES с использованием Qt (crossplatform)?

3 Solutions collect form web for “Как получить список устройств видеозахвата (веб-камер) на windowsх? (C ++)”

Из приведенных примеров скопируйте следующий код в dev.c. Затем откройте командную строку со всеми установленными параметрами SDK. В командной строке ссылка на ole32.lib и oleaut32.lib. Затем он покажет вам все устройства.

cl dev.c ole32.lib oleaut32.lib

dev.exe выдаст список в командной строке.

 #include  #include  #pragma comment(lib, "strmiids") HRESULT EnumerateDevices(REFGUID category, IEnumMoniker **ppEnum) { // Create the System Device Enumerator. ICreateDevEnum *pDevEnum; HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDevEnum)); if (SUCCEEDED(hr)) { // Create an enumerator for the category. hr = pDevEnum->CreateClassEnumerator(category, ppEnum, 0); if (hr == S_FALSE) { hr = VFW_E_NOT_FOUND; // The category is empty. Treat as an error. } pDevEnum->Release(); } return hr; } void DisplayDeviceInformation(IEnumMoniker *pEnum) { IMoniker *pMoniker = NULL; while (pEnum->Next(1, &pMoniker, NULL) == S_OK) { IPropertyBag *pPropBag; HRESULT hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag)); if (FAILED(hr)) { pMoniker->Release(); continue; } VARIANT var; VariantInit(&var); // Get description or friendly name. hr = pPropBag->Read(L"Description", &var, 0); if (FAILED(hr)) { hr = pPropBag->Read(L"FriendlyName", &var, 0); } if (SUCCEEDED(hr)) { printf("%S\n", var.bstrVal); VariantClear(&var); } hr = pPropBag->Write(L"FriendlyName", &var); // WaveInID applies only to audio capture devices. hr = pPropBag->Read(L"WaveInID", &var, 0); if (SUCCEEDED(hr)) { printf("WaveIn ID: %d\n", var.lVal); VariantClear(&var); } hr = pPropBag->Read(L"DevicePath", &var, 0); if (SUCCEEDED(hr)) { // The device path is not intended for display. printf("Device path: %S\n", var.bstrVal); VariantClear(&var); } pPropBag->Release(); pMoniker->Release(); } } void main() { HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (SUCCEEDED(hr)) { IEnumMoniker *pEnum; hr = EnumerateDevices(CLSID_VideoInputDeviceCategory, &pEnum); if (SUCCEEDED(hr)) { DisplayDeviceInformation(pEnum); pEnum->Release(); } hr = EnumerateDevices(CLSID_AudioInputDeviceCategory, &pEnum); if (SUCCEEDED(hr)) { DisplayDeviceInformation(pEnum); pEnum->Release(); } CoUninitialize(); } } 

Это Microsoft, что могло бы разумно быть где-то около 10 строк кода, благодаря чудесам COM, заканчивается как несколько сотен строк или около того.

Как разрешить пользователю выбирать устройство записи видео (веб-камера) с помощью OpenCV?

ответ не определен opencv

  • Что такое __stdcall?
  • Динамически загружать функцию из DLL
  • NetUIHWND и DirectUIHWND
  • Как распечатать в окне вывода отладки в приложении Win32?
  • Delphi - получить, какие файлы открываются приложением
  • Как использовать сторонний DLL-файл в Visual Studio C ++?
  • Как я читаю диск напрямую с .Net?
  • Контролировать использование сети процесса?
  • Как получить HMODULE для текущего исполняемого кода?
  • Принесите окно в WPF
  • Системная ошибка. Код: 8. Недостаточно памяти для обработки этой команды
  • Interesting Posts

    Excel зависает при копировании / разрезе для вставки в другое место

    Сделайте что-нибудь каждые 10 секунд командного файла

    Как создать отчет Excel за месяц

    Что является результатом NULL + int?

    используя class, определенный в dll c ++ в коде c #

    Как объединить три клавиши в качестве горячей клавиши с Autohotkey?

    Что мне нужно сделать, чтобы заставить Internet Explorer 8 принять самоподписанный сертификат?

    почему вам нужно связать функцию в конструкторе

    Добавление в ArrayList Java

    Почему Excel 2010 автоматически переформатирует номера?

    Копирование файлов из одного каталога в другой в Java

    Почему bit endianness является проблемой в битполях?

    Список как объект поддержки формы с использованием весны 3 mvc, правильный синтаксис?

    Есть ли способ спячки оконных приложений отдельно?

    Как сравнить символы Unicode, которые «похожи друг на друга»?

    Давайте будем гением компьютера.