Com 我可以通过外部程序通过名字对象发现我的私有DirectShow筛选器吗?

Com 我可以通过外部程序通过名字对象发现我的私有DirectShow筛选器吗?,com,filter,activex,directshow,Com,Filter,Activex,Directshow,这是一个很长的机会,但如果我能做到这一点,它将节省我的时间和麻烦。我有一个DirectShow视频过滤器,它是一个典型的外部DLL(AX文件),用于向Skype提供视频。我已经知道如何私下使用过滤器了。然而,我不知道是否有可能使一个私有的过滤器,一个嵌入在EXE中而不是外部DLL的过滤器,被外部程序发现。据我所知,使DirectShow筛选器可见的主要方法是通过在注册表中将它们注册为ActiveX/COM控件和专用筛选器,我认为这是不可能的,因为没有外部DLL供外部程序加载 那么,有没有一种巧妙

这是一个很长的机会,但如果我能做到这一点,它将节省我的时间和麻烦。我有一个DirectShow视频过滤器,它是一个典型的外部DLL(AX文件),用于向Skype提供视频。我已经知道如何私下使用过滤器了。然而,我不知道是否有可能使一个私有的过滤器,一个嵌入在EXE中而不是外部DLL的过滤器,被外部程序发现。据我所知,使DirectShow筛选器可见的主要方法是通过在注册表中将它们注册为ActiveX/COM控件和专用筛选器,我认为这是不可能的,因为没有外部DLL供外部程序加载


那么,有没有一种巧妙的方法来改进DirectShow发现系统,以便只有知道如何通过枚举通过其“友好名称”访问DirectShow筛选器的外部程序才能使用它?如果没有,我将继续在我的主应用程序和我的视频过滤器的外部版本之间来回发送数据,但我真的不想这样做。

如果外部应用程序要使用你的过滤器,它需要通过用fitler加载你的DLL并从那里创建一个实例来实例化它。如果你将你的过滤器放入.EXE,你仍然可以在fitler列表中注册它,但它不会起作用:外部应用程序将无法创建过滤器的instance

所以,如果你想让外部应用使用你的过滤器,你需要把它放到DLL中。请注意,如果您将过滤器放入DLL,则不必也向DirectShow注册它:您可能希望不注册它并私下实例化,在这种情况下,它将能够在您的应用程序中工作,同时您可以保留一个选项,以便在一段时间后完全注册它并使其可供外部应用程序使用


如果您希望过滤器在外部程序中运行,并以某种方式与应用程序通信,也可以这样做,但您要完全负责将要发生的所有进程间通信(也就是说,您需要实现它)。

我担心这一点。谢谢你的确认。