ActiveX安装不成功,直接创建其对象报错,采用接口机制进行判断.
来源:互联网 发布:java 时间加减 编辑:程序博客网 时间:2024/06/05 18:15
最近做的系统里用到了个ActiveX,它是个虚拟摄相头ax文件。安装了它驱动后,反复卸载安装后发现一个问题。
因为Delphi程序里导入安装了这个对像并生成一个控件,我采用直接创建对象的方式来访问。
而最开始,程序采用dspack枚举视频设备的列表方式判断它是否安装。结果(反复)卸载后,发现不重启电脑,dspack枚举视频设备的列表方式发现它还在,而创建这个对象就会报错: 没有注册类别。用try Except捕捉拦截不了这个错误,总是会在程序中报错误框,很不友好,导致了不可控。
另外,发现安装的这个控件的类并不是从接口直接继承的,那个接口是作为这个类的一个私有成员变量出现的。
这样一般的判断对象是否支持接口的方式,就不太好用了(自己水平有限)。
看了一个ComObj单元的CreateComObject函数的代码:
发现它调用了OleCheck,好像这个错误拦截不了了。于是我采用如下办法来判断这个对象是否成功注册
如果这里接口返回nil则直接函数退出。不再执行下面的对象创建。OK了。
因为Delphi程序里导入安装了这个对像并生成一个控件,我采用直接创建对象的方式来访问。
而最开始,程序采用dspack枚举视频设备的列表方式判断它是否安装。结果(反复)卸载后,发现不重启电脑,dspack枚举视频设备的列表方式发现它还在,而创建这个对象就会报错: 没有注册类别。用try Except捕捉拦截不了这个错误,总是会在程序中报错误框,很不友好,导致了不可控。
另外,发现安装的这个控件的类并不是从接口直接继承的,那个接口是作为这个类的一个私有成员变量出现的。
这样一般的判断对象是否支持接口的方式,就不太好用了(自己水平有限)。
看了一个ComObj单元的CreateComObject函数的代码:
- function CreateComObject(const ClassID: TGUID): IUnknown;
- begin
- OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
- CLSCTX_LOCAL_SERVER, IUnknown, Result));
- end;
发现它调用了OleCheck,好像这个错误拦截不了了。于是我采用如下办法来判断这个对象是否成功注册
- //判断接口是否注册
- try
- CoCreateInstance(CLASS_VCamSDK, nil, CLSCTX_INPROC_SERVER or
- CLSCTX_LOCAL_SERVER, IUnknown, iRoot);
- if iRoot = nil then Exit;
- iRoot.QueryInterface(IID_IVCamSDK, Ainf);
- if Ainf = nil then Exit;
- except
- iRoot := nil;
- Ainf := nil;
- Exit;
- end;
- ActiveX安装不成功,直接创建其对象报错,采用接口机制进行判断.
- VirtualBox 安装后打开不成功,报创建COM对象失败
- 抽象类和接口作为形式参数 多态 抽象类和接口虽然都不能直接创建对象,但是可以通过多态进行对象的创建
- 问题:ActiveX不能创建对象
- ActiveX 部件不能创建对象
- ActiveX 部件不能创建对象
- ActiveX控件不能创建对象
- ActiveX 部件不能创建对象
- ActiveX 部件不能创建对象
- ActiveX 部件不能创建对象
- 64位操作系统使用7.0版winiis系统,报ActiveX 部件不能创建对象问题!
- 采用Clone()方式创建对象
- 通过已知接口对象判断其是否为指定的CLSID类型
- python unittest错误接口直接报错的方法
- bitmap上直接进行图像处理报错
- ubuntu db2 安装 解决创建数据库不成功
- hadoop-2.2.0采用源码编译安装启动报错
- 将对象直接转换为接口应用的代码例子, 注意其中用了 as 方式, 很有意思
- javaee5 jaxb 学习
- 覆盖 GNU C 库 ― 轻而易举
- javascript 设定cookie
- SYBASE数据导入技巧
- 开始学习记录
- ActiveX安装不成功,直接创建其对象报错,采用接口机制进行判断.
- 小心:防止数据库数据写覆盖
- Asp.net教程:设计IP地址屏蔽功能
- 嵌入式Linux下使用的UI开发库
- 时间字符串转换 与SQL 出错
- C#中抽象类和接口的区别
- 一款不错的服务器备份软件支持LINUX
- 我们仍然在路上-走出软件作坊(五十)
- C#语言的几个层次