2011-12-01 53 views
1

這是一個遠射,但如果我能做到這一點,這將節省我的時間和麻煩。我有一個DirectShow視頻過濾器,它是向Skype提供視頻的典型外部DLL(AX文件)。我已經知道如何私下使用過濾器。但是,我不知道是否可以創建一個私有過濾器,一個嵌入在EXE中的過濾器,不是外部DLL,可以被外部程序發現。據我所知,DirectShow過濾器的主要方式是可見的是通過在註冊表中註冊爲一個ActiveX/COM控件和一個私有過濾器,我認爲這是無法完成的,因爲沒有外部DLL外部程序加載。我可以通過外部程序讓我的私人DirectShow過濾器可被Moniker發現嗎?

那麼,有沒有一種巧妙的方法來設計DirectShow發現系統,以便只知道如何通過枚舉訪問DirectShow過濾器的外部程序可以使用它?如果沒有,我會繼續在我的主應用程序和我的視頻過濾器的外部版本之間來回發送數據,但我真的寧願不必這樣做。

回答

2

如果外部應用程序要使用您的過濾器,它需要通過加載您的DLL與fitler並從那裏創建一個實例來實例化它。如果您將過濾器放入.EXE文件中,您仍然可以將其註冊到適配器列表中,但不會生效:外部應用程序將無法創建過濾器的優雅。

所以,如果你想要外部應用程序使用你的過濾器,你需要把它放入DLL中。請注意,如果將過濾器放入DLL中,則不必使用DirectShow註冊它:您可能希望不註冊它並私下實例化,在這種情況下,它可以在您的應用程序和同一時間,您可以選擇在一段時間後完全註冊,並將其提供給外部應用程序。

如果您希望過濾器在外部程序中運行,並以某種方式與您的應用程序交談,也可以這樣做,但是您將完全負責將發生的所有進程間通信(也就是說,您需要執行它)。

+0

我很害怕這個。感謝您的確認。 –

相關問題