.net 如何找到用于创建源筛选器的IMoniker?

.net 如何找到用于创建源筛选器的IMoniker?,.net,directshow,reverse-engineering,directshow.net,graphedit,.net,Directshow,Reverse Engineering,Directshow.net,Graphedit,目前,我正在编写一个基于DirectShow的应用程序,它应该可以帮助用户配置他们的电视捕获卡,因为GraphEdit对于大多数人来说似乎太难理解了。其思想是,此应用程序将生成的图形导出到一个将在另一个应用程序中使用的 用户可以选择应使用哪个设备()创建源过滤器,并可以更改有关视频/音频的一些设置 除了导出.GRF文件之外,我的应用程序还应该具有导入此类文件的功能。我的问题是:如何在导入的图中找到用于创建源过滤器的名字对象/设备 我尝试为所有连接的设备创建一个源过滤器列表,并将其与导入的图表中的

目前,我正在编写一个基于DirectShow的应用程序,它应该可以帮助用户配置他们的电视捕获卡,因为GraphEdit对于大多数人来说似乎太难理解了。其思想是,此应用程序将生成的图形导出到一个将在另一个应用程序中使用的

用户可以选择应使用哪个设备()创建源过滤器,并可以更改有关视频/音频的一些设置

除了导出.GRF文件之外,我的应用程序还应该具有导入此类文件的功能。我的问题是:如何在导入的图中找到用于创建源过滤器的名字对象/设备


我尝试为所有连接的设备创建一个源过滤器列表,并将其与导入的图表中的源过滤器进行比较,但这似乎不起作用。

您无法区分名字对象和创建的实例。要区分名字对象并能够找到您需要的名字对象,请使用其
IMoniker::GetDisplayName
字符串作为唯一的持久标识符。

我有一个显示名称不唯一的示例,因此我无法使用实例的名称来找出使用哪个IMoniker创建它。这几乎不可能,您确定没有混淆名字对象显示名称和筛选器的友好名称吗。我想这就是正在发生的事情。啊,你是对的,我把两个名字都混淆了。我现在了解到我可以使用这个DisplayName来识别IMonikers,但是我可以找出哪个DisplayName链接到哪个源过滤器吗?不,你不能。一旦实例化,对象就不知道它来自哪个路径。这取决于您是否记得名字对象显示名称,以便能够再次实例化。这不在GRF文件中,因此您选择使用它来完整描述拓扑可能不是最好的解决方案。如果它不在.GRF文件中,我知道的足够多,谢谢。我可能会创建另一个文件来记住使用的名字对象。