【问题标题】:Can I make my private DirectShow filter discoverable by Moniker by external programs?我可以让 Moniker 可以通过外部程序发现我的私人 DirectShow 过滤器吗?
【发布时间】:2011-12-01 17:24:39
【问题描述】:

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

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

【问题讨论】:

    标签: com filter activex directshow


    【解决方案1】:

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

    因此,如果您希望外部应用程序使用您的过滤器,则需要将其放入 DLL 中。请注意,如果您将过滤器放入 DLL,则不必同时向 DirectShow 注册它:您可能希望不注册它并私下实例化,在这种情况下,它将能够在您的应用程序和同时,您可以选择稍后完全注册它并使其可供外部应用使用。

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

    【讨论】:

    • 我害怕那个。感谢您的确认。
    猜你喜欢
    • 2021-11-22
    • 2022-11-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2015-03-23
    • 2014-11-21
    • 2014-06-30
    • 2013-01-03
    相关资源
    最近更新 更多