C#调用OCX控件Catastrophic failure解决方法
来源:互联网 发布:js foreach遍历map 编辑:程序博客网 时间:2024/04/30 02:12
在C#中调用VC写的OCX控件,有时会碰到一些很奇怪的问题,比如运行时程序报错:(8000ffff) : "Catastrophic failure".具体什么原因导致?以下以一个简单的OCX为例(简称APT.ocx)。
APT.ocx在VB以及VC中使用没有问题,但在C#中使用就很奇怪,具体现象如下:
注册APT.ocx后,直接在C#工程中引用该控件,在调用该控件提供的方法时程序报错:(8000ffff) : "Catastrophic failure".经查证,导致此异常的原因在于C#调用控件的方式是通过automation server,但在visual C++4.0以后在IDispatch::Invoke中增加IsInvokeAllowed判断,来确定是否允许automation call,系统默认是返回False,也就是不支持automation call。
为解决这一问题,可以采用microsoft提供的Aximp.exe工具对APT.ocx做转换,对APT.ocx再次封装成两个类库(APTLib.dll,AxAPTLib.dll),但对程序中的使用还要分两种情况:
(1)C# Windows Form
对于Windows Form程序,直接添加AxAPTLib.dll引用,调用Controls.add()方法添加AxAPTLib.AxAPT类实例即可
(2)C#非Windows Form
对于非Windows Form的C#程序而言,操作稍显麻烦,需要实例化AxAPTLib.AxAPT(),并显式调用该实例的CreateControl()方法才能调用其他方法否则在调用时系统将报AxHost.InvalidActiveXStateException异常
详情请参阅:
http://support.microsoft.com/kb/189065/en-us
http://support.microsoft.com/kb/146120/EN-US/
- C#调用OCX控件Catastrophic failure解决方法
- C#调用ocx控件
- C#调用OCX控件
- C#中调用OCX控件
- C#中调用OCX控件
- 解决 VC2012 ATL 多线程调用 报错:E_UNEXPECTED Catastrophic failure.
- VS2010 C#中实现在调用第三方ocx控件时,无需手动注册ocx控件
- Javascript调用OCX控件
- Javascript调用OCX控件
- Javascript调用OCX控件
- js调用ocx控件
- Javascript调用OCX控件
- Javascript调用ocx控件
- js调用ocx控件
- Javascript调用ocx控件
- silverlight调用ocx控件
- jsp调用ocx控件
- Java调用OCX控件
- 求救
- SNMP协议(轮训和中断检测)
- java的几种对象(PO,VO,DAO,BO,POJO)解释
- Android开发自动提示框
- 111
- C#调用OCX控件Catastrophic failure解决方法
- 代理上网帐号的筛选程序
- 100行解码Protocol Buffers
- js日期时间控件
- Java虚拟机(一)
- WinForm票据套打重定位(http://www.cnblogs.com/wdong/archive/2011/07/10/2102102.html)
- Oracle预编译的SQL语句处理
- CString TCHAR的互相转换
- DES加密