查看应用程序是不是正在使用 Windows 10 上的麦克风
Posted
技术标签:
【中文标题】查看应用程序是不是正在使用 Windows 10 上的麦克风【英文标题】:See if an app is using the Microphone on Windows 10查看应用程序是否正在使用 Windows 10 上的麦克风 【发布时间】:2020-11-11 20:55:59 【问题描述】:我正在尝试编写一个脚本来检查网络摄像头和麦克风是否在使用中。对于网络摄像头,我已经设法用 Python 编写了一些东西,但是到目前为止,我还没有找到一个很好的方法来为麦克风做同样的事情。
在 Windows 中,您在 SysTray 中有一个专用设置,当应用实际使用您的麦克风时会显示该设置(甚至显示哪个):
很明显,Windows 知道它目前是否被使用(这就是我所需要的),甚至知道哪个应用程序正在使用它。但是我还没有找到任何方法来读取这些信息。
是否有可能以某种方式从 Windows 本身获取数据? 在这一点上,我什至不介意将使用哪种语言,Python、C#、PowerShell 或其他。
PS:我知道可能有一些方法可以访问麦克风,但它不会显示在 SysTray 中,但这种情况与我想要实现的目标无关。
【问题讨论】:
您找到解决方案了吗? 不是一个“合适的”,我只是使用了下面描述的图像识别方法,这对我来说效果很好,但它可能不适合任何类型的“生产”环境 【参考方案1】:我现在使用以下方法管理它 - 我只是截取桌面的屏幕截图并检查我希望出现在 SysTray 中的图标,以防某些应用正在使用麦克风。
为此,我使用了可以通过 pip 安装的包 imagesearch:pip3 install 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")
imagePath 中定义的图像如下所示:
我在以下页面找到了该包的信息:https://brokencode.io/how-to-easily-image-search-with-python/
识别效果非常好且速度很快,但当然这可能不是最佳解决方案,适用于您只想知道是否有任何东西在使用麦克风的简单情况。如果有一些可用的 API 可以被询问,那仍然会更好,但总比没有好,并解决了我的问题。
【讨论】:
只是出于好奇,当这个建议的答案显示在您最喜欢的浏览器中时,您的 Python 脚本会报告什么? 您好,只要带有系统托盘的任务栏可见,就可以正常工作。如果您在全屏模式下运行任何东西(例如游戏或演示模式下的东西),它当然不会检测到它(除非您有第二个带有任务栏的屏幕)。这能回答你的问题还是我弄错了? :-) 代码似乎只在寻找图像数据。由于您正在搜索的图像出现在此答案中,因此只要它在屏幕上,您的实现就会报告命中。即使不使用麦克风。如果确实如此,那么您所拥有的是一个脆弱的解决方案,有机会同时产生误报和误报。在消耗大量计算能力的同时。查看Windows.Media.Devices 命名空间,看看您是否可以使用这些接口中的任何一个。 好吧,我明白了。是的,这会将其检测为“麦克风正在使用”。然而,图像搜索将允许缩小位置(例如任务栏)。像这样“在野外”遇到这个图像也不太可能,所以它仍然适用于我的用例,这是一个每 2 分钟左右运行一次检查的个人项目。我检查了您之前提到的名称空间,但在那里找不到任何东西。我同意这不是专业应用程序的解决方案,因为它不够可靠 在这种情况下,Audio Session Events 可能就是您要查找的内容。 Audio Events for Legacy Audio Applications 展示了一个注册通知的小示例,以说明核心原则。以上是关于查看应用程序是不是正在使用 Windows 10 上的麦克风的主要内容,如果未能解决你的问题,请参考以下文章
谁知道如何查看Windows下正在运行的程序堆栈,Linux可以用gdb,windows下该用啥