none
C#调用OCX异常 RRS feed

  • 问题

  • 我是使用aximp生成的dll然后引用这些dll,但是在调用OCX方法时总是提示我

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

            public void LoadOcx()
            {
                // 创建OCX的对象
                AxWRITEACTIVEXLib.AxWriteActiveX axWriteactive = new AxWRITEACTIVEXLib.AxWriteActiveX();
                //开始初始化ocx对象
                axWriteactive.BeginInit();
                axWriteactive.WriteLog(5, "D:\\AA.log", "test-------------------------");
                // 结束初始化
                axWriteactive.EndInit();
            }

    代码已上传:http://yunpan.cn/cK5dVNHUZsbv3 (提取码:2e2b)
    2015年2月5日 8:35

全部回复

  • 你好:  你的操作系统是64位的么?  如果是64位的需要调整下你的编译选项。 将目标平台调整为X86。

    2015年2月5日 9:22
  • 你好,我在项目属性中调整了目标平台X86,编译运行后还是这个错误。

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

    2015年2月5日 9:25
  • 你好,我测试过你的代码。

      this.ocx = ((WRITEACTIVEXLib._DWriteActiveX)(this.GetOcx()));   这个执行后还是    OCX还是null  ,你应该检查下这里面的方法是否正确。

    另外你的这句  

      //开始初始化ocx对象
                axWriteactive.BeginInit();     

    根本没有初始化出这个对象,你自己认真检查一下。

    2015年2月5日 14:28
  • 是啊,你说的我知道,但是我已经注册OCX了,但是这句(  this.ocx = ((WRITEACTIVEXLib._DWriteActiveX)(this.GetOcx()));   )还是始终返回null,我在想会不会是我用的X64不支持当前ocx啊,但是我是通过X64的方式进行的OCX注册。
    2015年2月6日 0:57