如何使用C#检测连接到我的机器的相机

时间:2013-08-23 16:22:49

标签: c# winapi camera

我能够知道连接到我的电脑的声音设备和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.");

2 个答案:

答案 0 :(得分: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++;
    }
}

答案 1 :(得分:1)

此工具将证明有用:

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

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

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