如何在不激活摄像头的情况下确定 Windows 10 上是否正在使用网络摄像头?

dst*_*ley 2 windows winapi uwp

在 Windows 10 上,如何确定连接的网络摄像头当前是否处于活动状态,而无需在摄像头关闭时将其打开?

目前,我可以尝试使用相机拍照,如果失败,则假设相机正在使用中。但是,这意味着摄像头的活动 LED 将打开(因为摄像头正在使用)。由于我想每隔几秒检查一次相机的状态,因此使用此方法来确定相机是否正在使用是不可行的。

我已使用 Win32 和 UWP 标签,并将接受使用任一 API 的解决方案。

Chr*_*yan 6

在这里发现了一个提示,提到 Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam\NonPackages 下的注册表项在使用网络摄像头时会发生变化。

这里有一些键可以跟踪应用程序使用网络摄像头时的时间戳。当网络摄像头正在使用中时,“LastUsedTimeStop”似乎为 0,因此要判断网络摄像头是否正在使用中,我们可以简单地检查是否有任何应用程序具有 LastUsedTimeStop==0。

下面是一个快速的 Python 类,用于轮询注册表以了解网络摄像头的使用情况: https://gist.github.com/cobryan05/8e191ae63976224a0129a8c8f376adc6

用法示例:

import time
from webcamDetect import WebcamDetect
webcamDetect = WebcamDetect()
while True:
    print("Applications using webcam:")
    for app in webcamDetect.getActiveApps():
        print(app)
    print("---")
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)