我正在尝试编写一个脚本来检查网络摄像头和麦克风是否正在使用。对于网络摄像头,我已经设法用 Python 编写了一些东西,但是到目前为止,我还没有找到一个好的方法来为麦克风做同样的事情。
在 Windows 中,系统托盘中有一个专用设置,当应用程序实际使用您的麦克风时,该设置会显示(甚至显示是哪一个):
很明显,Windows 知道当前是否使用它(这就是我所需要的),甚至知道哪个应用程序正在使用它。然而我还没有找到任何方法来以任何方式读出该信息。
是否有可能以某种方式从 Windows 本身获取数据? 此时,我什至不介意使用哪种语言,Python、C#、PowerShell 或其他语言。
PS:我知道可能有一些方法可以访问麦克风而不将其显示在系统托盘中,但这种情况与我想要实现的目标无关。
我现在使用以下方法进行管理 - 我只是截取桌面的屏幕截图,并检查我希望在系统托盘中出现的图标,以防某些应用程序正在使用麦克风。
为此,我使用了可以通过 pip 安装的包 imagesearch:
pip3 安装 python-imageseach-drov0
然后我通过该包截取屏幕截图并检查该项目是否在屏幕上可见:
from python_imagesearch.imagesearch import imagesearch
pos = imagesearch(imagePath)
microphone_on = pos[0] != -1
if microphone_on:
print("Microphone is in use")
else:
print("Microphone is not in use")
我在以下页面找到了该包的信息:https://brokencode.io/how-to-easily-image-search-with-python/
识别效果非常好且快速,但是当然这可能不是最好的解决方案,并且适用于您只想知道是否有任何东西正在使用麦克风的简单情况。如果有一些可用的 API 可以询问,那就更好了,但总比没有好,解决了我的问题。
您可以检查此注册表项: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\麦克风
在 NonPackages 项下,列出了所有使用麦克风的非 Microsoft 应用程序以及可执行文件的路径。如果应用程序当前正在使用麦克风,则 LastUsedTimeStop 值将设置为 0。 干杯!