Utility class to get a Class Factory for a certain Class ID by loading the dll that implements that class
예제 #1
0
        private static IFilter LoadFilterFromDll(string dllName, string filterPersistClass)
        {
            //Get a classFactory for our classID
            IClassFactory classFactory = ComHelper.GetClassFactory(dllName, filterPersistClass);

            if (classFactory == null)
            {
                return(null);
            }

            //And create an IFilter instance using that class factory
            Guid   IFilterGUID = new Guid("89BCB740-6119-101A-BCB7-00DD010655AF");
            Object obj;

            classFactory.CreateInstance(null, ref IFilterGUID, out obj);
            return(obj as IFilter);
        }
        private static IFilter LoadFilterFromDll(string dllName, string filterPersistClass)
        {
            //Get a classFactory for our classID
            IClassFactory classFactory = ComHelper.GetClassFactory(dllName, filterPersistClass);

            if (classFactory == null)
            {
                return(null);
            }

            //And create an IFilter instance using that class factory
            // http://msdn2.microsoft.com/en-us/library/aa965717.aspx
            // The first identifies all filters' persistent handler, IID_IFilter, which is {89BCB740-6119-101A-BCB7-00DD010655AF}. This CLSID is constant for all filters that implement IFilter.
            Guid   IFilterGUID = new Guid("89BCB740-6119-101A-BCB7-00DD010655AF");
            Object obj;

            classFactory.CreateInstance(null, ref IFilterGUID, out obj);
            return(obj as IFilter);
        }
예제 #3
0
        private static FilterWrapper LoadFilterFromDll(string dllName, string filterPersistClass)
        {
            //Get a classFactory for our classID
            ClassFactoryWrapper classFactory = ComHelper.GetClassFactory(dllName, filterPersistClass);

            if (classFactory == null)
            {
                return(null);
            }

            object obj;
            //And create an IFilter instance using that class factory
            Guid filterGuid = new Guid("89BCB740-6119-101A-BCB7-00DD010655AF");

            classFactory.ClassFactory.CreateInstance(null, ref filterGuid, out obj);

            if (obj as IFilter == null)
            {
                using (classFactory)
                    return(null);
            }

            return(new FilterWrapper(classFactory, obj as IFilter));
        }
예제 #4
0
 public void Dispose()
 {
     ComHelper.FreeLibrary(m_Handle);
 }