有没有办法确定哪个进程正在使用特定的DirectShow过滤器?特别是视频捕获过滤器。
如果我们的应用程序因尝试使用DirectShow过滤器而抛出异常,因为它已经在使用中,我们希望识别正在使用过滤器的进程并将其终止。当然,这不是通用或分布式应用程序,而是安装在专用计算机上,其唯一目的是运行我们的应用程序。
谢谢,
答案 0 :(得分:1)
理想情况下,我认为应该尽一切可能避免杀死一个过程......结果可能会发生很多坏事。也就是说,我的建议依赖于5个部分:
由于您没有指定任何语言或编程框架,我将假设C#/ .net只是为了方便。
1- DirectShow过滤器只是COM对象,因此它们在系统中注册。您需要找出过滤器的GUI,使用此GUID,您可以找到存储此对象信息的注册表项,然后您可以从那里检索文件系统中的dll的位置。 Microsoft.Win32.Registry可用于访问注册表。
2- System.Diagnostics.Process.GetProcesses()可用于枚举所有正在运行的进程。
3- System.Diagnostics.Process.Modules可用于枚举流程加载的所有模块(dll)。
其余步骤应该是微不足道的。