registrieren eines DirectShow-Filters



  • Hi!

    Bis jetzt hab ich einfach immer das Programm regsvr32.exe mit entsprechenden Parametern aufgerufen.
    Geht das irgendwie eleganter? Wie z.B. mir ner Funktion wie register_a_DirectShow_Filter(char* name_of_the_Filter); oder so?
    Gibt's da was in der Richtung?
    Wenn nicht ist auch nicht so schlimm...

    MFG
    Eddi



  • a_user schrieb:

    Gibt's da was in der Richtung?

    Nein, gibt es nicht. Eine solche Funktion kannst Du Dir aber leicht selbst bauen. Allerdings geht das nicht mit dem Namen des Filters; Du benötigst schon den Namen des Moduls.

    Ungefähr so:

    typedef HRESULT (WINAPI * DLLREGISTERSERVER)();
    
    void register_a_DirectShow_Filter(char* name_of_the_Filter)
    {
        HRESULT hrInit = CoInitialize(NULL);
        HINSTANCE hDll = LoadLibrary(name_of_the_Filter);
    
        if(hDll)
        {
            DLLREGISTERSERVER pfn;
    
            pfn = (DLLREGISTERSERVER)GetProcAddress(hDll, "DllRegisterServer");
            pfn();
    
            FreeLibrary(hDll);
    
        }   
    
        if(SUCCEEDED(hrInit))
            CoUninitialize();
    
      return;
    }
    

    So sehr viel mehr macht regsvr32 auch nicht. Allerdings werden dort wohl die Rückgabewerte der Funktionsaufrufe geprüft werden. Das habe ich mir hier einfach mal gespart.



  • Vielen Dank!


Anmelden zum Antworten