所以我们有一个简单的 C++ win32 控制台应用程序。我们想要的只是打印可用的网络摄像头和其他视频捕获设备的列表。我们想尽可能多地使用 Windows api - 没有外部库 - 毕竟 - 我们想要的只是打印出一个列表 - 而不是飞上月球!)如何做这样的事情?
我自己的研究:我找到了这个 官方的 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 < pParam->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 上的视频捕获设备列表? 以及有关使用正确、经过测试的答案 获取相机名称的特殊详细信息
- 如何获取 Mac OS 上的视频捕获设备列表? 正确,尚未经过我的答案测试
- 如何在 Windows 上获取视频捕获设备列表? 有正确的、经过测试的答案
- 如何使用 Qt(跨平台)获取列表视频捕获设备名称?
原文由 Rella 发布,翻译遵循 CC BY-SA 4.0 许可协议
从显示的示例中,将以下代码复制到 dev.c 中。然后打开设置了所有 SDK 变量的命令行。在命令行链接到 ole32.lib 和 oleaut32.lib。然后它将向您显示所有设备。
cl dev.c ole32.lib oleaut32.lib
dev.exe 将在命令行上给出列表。