我是Directshow.NET的初学者。为了开发一个记录桌面屏幕的应用程序,我从this link下载了一个项目。
虚拟相机通过regasm
注册并使用代码行在graphstudio
,C#代码中工作:
Type type = Type.GetTypeFromCLSID(new Guid("F90CF082-213F-4F17-8B19-68267C72052F"));
IBaseFilter screenRecorderFilter = (IBaseFilter)Activator.CreateInstance(type);
这些项目是在.NET framework 2.0上开发的,因此将框架版本更改为4.0(客户端配置文件)。项目构建成功,汇编已使用regasm
注册并在graphstudio
中选中过滤器,发现工作正常。如果我执行C#项目,我们已经使用了这个过滤器,它将异常作为
无法投射类型的对象 ' DesktopVirtualCamFilters.VirtualCamFilter'输入 ' DirectShowLib.IBaseFilter'
看起来在IBaseFilter screenRecorderFilter = (IBaseFilter)Activator.CreateInstance(type);
行投射失败。
如果选择框架版本4.0,为什么转换失败,即使过滤器在graphstudio
中成功运行也是如此。使用4.0
对于代码参考,我已在this link
上传了项目班级声明:
[ComVisible(true)]
[Guid("F90CF082-213F-4F17-8B19-68267C72052F")]
[AMovieSetup(Merit.Normal,AMovieSetup.CLSID_VideoInputDeviceCategory)]
public class VirtualCamFilter : BaseSourceFilter, IAMFilterMiscFlags
{
}