回 帖 发 新 帖 刷新版面

主题:dll调用ocx问题,遍历google都无答案,特来请教。

目前遇到个难题

已有一个现成的ocx,该ocx内有一些自动触发的事件,在c#的winform内调用一切ok。

现在需要用c#写一个dll来调用这个ocx,问题在于不知道该如何调用ocx内的事件,因为没有窗口,无法将ocx直接托拽到窗口上,
仅仅通过引用那个ocx来调用代码会报错。

未处理 System.Runtime.InteropServices.COMException
  Message="灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))"
  Source="mscorlib"
  ErrorCode=-2147418113
  StackTrace:

我做了如下尝试:
在一个winform上,将ocx托拽到界面上,自然一切ok。

然后将InitializeComponent中的this.Controls.Add(这个ocx对象) 语句注释掉,因为要使用dll 调用ocx,显然不可能有this.Controls。

就报错了
引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。

我查了下,msdn的解释是:只有在完成对 ActiveX 控件的实例化和初始化之后,才可以引用 ActiveX 控件的公有属性和方法,否则就会引发 AxHost.InvalidActiveXStateException 异常。
连接如下:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.axhost.invalidactivexstateexception(VS.80).aspx连接如下:

dll中无法对ocx进行实例化啊,怎么办呢?

回复列表 (共1个回复)

沙发

我也遇到类似问题了,我报的异常是HRESULT:0x800A018A,控件是axMSComm

我来回复

您尚未登录,请登录后再回复。点此登录或注册