2

我能够知道连接到我的 PC 的声音设备和 USB 设备,但无法找到连接到我的机器的相机。使用下面的代码来获取声音设备

Console.WriteLine("Win32 SoundDevices\r\n===============================");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_SoundDevice");
            foreach (ManagementObject soundDevice in searcher.Get())
            {
                //Console.WriteLine("Device found: {0}\n", soundDevice.ToString());
                Console.WriteLine("Device found: {0}\n", soundDevice.GetPropertyValue("ProductName"));
            }
            Console.WriteLine("Search complete.");
4

2 回答 2

2

这个工具将被证明是有用的:

http://www.microsoft.com/en-us/download/details.aspx?id=8572

我相当确定没有可以ManagementObjectSearcher()专门为网络摄像头发送的等效字符串。有“Win32_USBControllerDevice”,然后您可以确定它是否是网络摄像头。

一个更好的解决方案是利用DirectShow.NET

于 2013-08-23T21:52:55.727 回答
2

我写了一个对我很有效的解决方案。这种方法在我的笔记本电脑上找到了两个 USB 摄像头和一个集成摄像头。

private static async Task ListAllCamerasAsync()
{
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM win32_PNPEntity WHERE PnPClass='Camera'");
    var collection = await Task.Run(() => { return searcher.Get(); });
    var cameraIndex = 0;
    foreach (ManagementObject cameraDevice in collection)
    {
        Console.WriteLine($"Camera {cameraIndex}: {cameraDevice["Name"]}");
        cameraIndex++;
    }
}
于 2021-07-27T23:02:33.383 回答